celldetective 1.2.1__py3-none-any.whl → 1.2.2.post1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. celldetective/__main__.py +12 -5
  2. celldetective/events.py +28 -2
  3. celldetective/gui/about.py +0 -1
  4. celldetective/gui/analyze_block.py +3 -18
  5. celldetective/gui/btrack_options.py +126 -21
  6. celldetective/gui/classifier_widget.py +67 -111
  7. celldetective/gui/configure_new_exp.py +37 -4
  8. celldetective/gui/control_panel.py +14 -30
  9. celldetective/gui/generic_signal_plot.py +793 -0
  10. celldetective/gui/gui_utils.py +401 -226
  11. celldetective/gui/json_readers.py +0 -2
  12. celldetective/gui/layouts.py +269 -25
  13. celldetective/gui/measurement_options.py +14 -23
  14. celldetective/gui/neighborhood_options.py +3 -15
  15. celldetective/gui/plot_measurements.py +10 -23
  16. celldetective/gui/plot_signals_ui.py +53 -687
  17. celldetective/gui/process_block.py +320 -186
  18. celldetective/gui/retrain_segmentation_model_options.py +30 -47
  19. celldetective/gui/retrain_signal_model_options.py +5 -14
  20. celldetective/gui/seg_model_loader.py +129 -113
  21. celldetective/gui/signal_annotator.py +89 -99
  22. celldetective/gui/signal_annotator2.py +5 -9
  23. celldetective/gui/styles.py +32 -0
  24. celldetective/gui/survival_ui.py +49 -712
  25. celldetective/gui/tableUI.py +0 -1
  26. celldetective/gui/thresholds_gui.py +38 -11
  27. celldetective/gui/viewers.py +6 -7
  28. celldetective/io.py +60 -82
  29. celldetective/measure.py +374 -15
  30. celldetective/neighborhood.py +1 -7
  31. celldetective/preprocessing.py +2 -4
  32. celldetective/relative_measurements.py +0 -3
  33. celldetective/scripts/analyze_signals.py +0 -1
  34. celldetective/scripts/measure_cells.py +1 -3
  35. celldetective/scripts/measure_relative.py +1 -2
  36. celldetective/scripts/segment_cells.py +16 -12
  37. celldetective/scripts/segment_cells_thresholds.py +17 -10
  38. celldetective/scripts/track_cells.py +18 -18
  39. celldetective/scripts/train_segmentation_model.py +1 -2
  40. celldetective/scripts/train_signal_model.py +0 -3
  41. celldetective/segmentation.py +1 -1
  42. celldetective/signals.py +17 -8
  43. celldetective/tracking.py +2 -1
  44. celldetective/utils.py +42 -2
  45. {celldetective-1.2.1.dist-info → celldetective-1.2.2.post1.dist-info}/METADATA +19 -12
  46. celldetective-1.2.2.post1.dist-info/RECORD +86 -0
  47. {celldetective-1.2.1.dist-info → celldetective-1.2.2.post1.dist-info}/WHEEL +1 -1
  48. celldetective/models/segmentation_effectors/primNK_cfse/config_input.json +0 -29
  49. celldetective/models/segmentation_effectors/primNK_cfse/cp-cfse-transfer +0 -0
  50. celldetective/models/segmentation_effectors/primNK_cfse/training_instructions.json +0 -37
  51. celldetective/models/segmentation_effectors/ricm-bimodal/config_input.json +0 -130
  52. celldetective/models/segmentation_effectors/ricm-bimodal/ricm-bimodal +0 -0
  53. celldetective/models/segmentation_effectors/ricm-bimodal/training_instructions.json +0 -37
  54. celldetective-1.2.1.dist-info/RECORD +0 -91
  55. {celldetective-1.2.1.dist-info → celldetective-1.2.2.post1.dist-info}/LICENSE +0 -0
  56. {celldetective-1.2.1.dist-info → celldetective-1.2.2.post1.dist-info}/entry_points.txt +0 -0
  57. {celldetective-1.2.1.dist-info → celldetective-1.2.2.post1.dist-info}/top_level.txt +0 -0
@@ -7,12 +7,11 @@ import datetime
7
7
  import os
8
8
  import json
9
9
  from celldetective.io import auto_load_number_of_frames, load_frames, interpret_tracking_configuration
10
- from celldetective.utils import extract_experiment_channels, _extract_channel_indices_from_config, _extract_channel_indices, ConfigSectionMap, _extract_nbr_channels_from_config, _get_img_num_per_channel, extract_experiment_channels
10
+ from celldetective.utils import extract_experiment_channels, ConfigSectionMap, _get_img_num_per_channel, extract_experiment_channels
11
11
  from celldetective.measure import drop_tonal_features, measure_features
12
12
  from celldetective.tracking import track
13
13
  from pathlib import Path, PurePath
14
14
  from glob import glob
15
- from shutil import rmtree
16
15
  from tqdm import tqdm
17
16
  import numpy as np
18
17
  import pandas as pd
@@ -21,7 +20,6 @@ import os
21
20
  from natsort import natsorted
22
21
  from art import tprint
23
22
  from tifffile import imread
24
- import threading
25
23
 
26
24
  tprint("Track")
27
25
 
@@ -60,7 +58,6 @@ parent1 = Path(pos).parent
60
58
  expfolder = parent1.parent
61
59
  config = PurePath(expfolder,Path("config.ini"))
62
60
  assert os.path.exists(config),'The configuration file for the experiment could not be located. Abort.'
63
- print("Configuration file: ",config)
64
61
 
65
62
  # from exp config fetch spatial calib, channel names
66
63
  movie_prefix = ConfigSectionMap(config,"MovieSettings")["movie_prefix"]
@@ -76,10 +73,9 @@ nbr_channels = len(channel_names)
76
73
  # from tracking instructions, fetch btrack config, features, haralick, clean_traj, idea: fetch custom timeline?
77
74
  instr_path = PurePath(expfolder,Path(f"{instruction_file}"))
78
75
  if os.path.exists(instr_path):
79
- print(f"Tracking instructions for the {mode} population has been successfully located.")
76
+ print(f"Tracking instructions for the {mode} population have been successfully loaded...")
80
77
  with open(instr_path, 'r') as f:
81
78
  instructions = json.load(f)
82
- print("Reading the following instructions: ",instructions)
83
79
  btrack_config = interpret_tracking_configuration(instructions['btrack_config_path'])
84
80
 
85
81
  if 'features' in instructions:
@@ -102,7 +98,7 @@ if os.path.exists(instr_path):
102
98
  else:
103
99
  post_processing_options = None
104
100
  else:
105
- print('No tracking instructions found. Use standard bTrack motion model.')
101
+ print('Tracking instructions could not be located... Using a standard bTrack motion model instead...')
106
102
  btrack_config = interpret_tracking_configuration(None)
107
103
  features = None
108
104
  mask_channels = None
@@ -117,7 +113,7 @@ label_path = natsorted(glob(pos+f"{label_folder}"+os.sep+"*.tif"))
117
113
  if len(label_path)>0:
118
114
  print(f"Found {len(label_path)} segmented frames...")
119
115
  else:
120
- print(f"No segmented frames have been found. Please run segmentation first, skipping...")
116
+ print(f"No segmented frames have been found. Please run segmentation first. Abort...")
121
117
  os.abort()
122
118
 
123
119
  # Do this if features or Haralick is not None, else don't need stack
@@ -168,14 +164,20 @@ def measure_index(indices):
168
164
  # Multithreading
169
165
  indices = list(range(img_num_channels.shape[1]))
170
166
  chunks = np.array_split(indices, n_threads)
171
- threads = []
172
- for i in range(n_threads):
173
- thread_i = threading.Thread(target=measure_index, args=[chunks[i]])
174
- threads.append(thread_i)
175
- for th in threads:
176
- th.start()
177
- for th in threads:
178
- th.join()
167
+
168
+ import concurrent.futures
169
+
170
+ with concurrent.futures.ThreadPoolExecutor() as executor:
171
+ executor.map(measure_index, chunks)
172
+
173
+ # threads = []
174
+ # for i in range(n_threads):
175
+ # thread_i = threading.Thread(target=measure_index, args=[chunks[i]])
176
+ # threads.append(thread_i)
177
+ # for th in threads:
178
+ # th.start()
179
+ # for th in threads:
180
+ # th.join()
179
181
 
180
182
  df = pd.concat(timestep_dataframes)
181
183
  df.reset_index(inplace=True, drop=True)
@@ -202,8 +204,6 @@ trajectories, napari_data = track(None,
202
204
  clean_trajectories_kwargs=post_processing_options,
203
205
  volume=(shape_x, shape_y),
204
206
  )
205
- print(trajectories)
206
- print(trajectories.columns)
207
207
 
208
208
  # out trajectory table, create POSITION_X_um, POSITION_Y_um, TIME_min (new ones)
209
209
  # Save napari data
@@ -11,11 +11,10 @@ from tqdm import tqdm
11
11
  import numpy as np
12
12
  import random
13
13
 
14
- from celldetective.utils import load_image_dataset, normalize_per_channel, augmenter, interpolate_nan
14
+ from celldetective.utils import load_image_dataset, augmenter, interpolate_nan
15
15
  from celldetective.io import normalize_multichannel
16
16
  from stardist import fill_label_holes
17
17
  from art import tprint
18
- import matplotlib.pyplot as plt
19
18
  from distutils.dir_util import copy_tree
20
19
  from csbdeep.utils import save_json
21
20
 
@@ -5,11 +5,8 @@ Copright © 2023 Laboratoire Adhesion et Inflammation, Authored by Remy Torro.
5
5
  import argparse
6
6
  import os
7
7
  import json
8
- from pathlib import Path, PurePath
9
8
  from glob import glob
10
- from tqdm import tqdm
11
9
  import numpy as np
12
- import gc
13
10
  from art import tprint
14
11
  from celldetective.signals import SignalDetectionModel
15
12
  from celldetective.io import locate_signal_model
@@ -3,7 +3,7 @@ Segmentation module
3
3
  """
4
4
  import json
5
5
  import os
6
- from .io import locate_segmentation_model, get_stack_normalization_values, normalize_multichannel
6
+ from .io import locate_segmentation_model, normalize_multichannel
7
7
  from .utils import _estimate_scale_factor, _extract_channel_indices
8
8
  from pathlib import Path
9
9
  from tqdm import tqdm
celldetective/signals.py CHANGED
@@ -9,7 +9,7 @@ from tensorflow.keras.losses import CategoricalCrossentropy, MeanSquaredError, M
9
9
  from tensorflow.keras.metrics import Precision, Recall, MeanIoU
10
10
  from tensorflow.keras.models import load_model,clone_model
11
11
  from tensorflow.config.experimental import list_physical_devices, set_memory_growth
12
- from tensorflow.keras.utils import to_categorical, plot_model
12
+ from tensorflow.keras.utils import to_categorical
13
13
  from tensorflow.keras import Input, Model
14
14
  from tensorflow.keras.layers import Conv1D, BatchNormalization, Dense, Activation, Add, MaxPooling1D, Dropout, GlobalAveragePooling1D, Concatenate, ZeroPadding1D, Flatten
15
15
  from tensorflow.keras.callbacks import Callback
@@ -18,13 +18,12 @@ from sklearn.metrics import jaccard_score, balanced_accuracy_score, precision_sc
18
18
  from scipy.interpolate import interp1d
19
19
  from scipy.ndimage import shift
20
20
 
21
- from celldetective.io import get_signal_models_list, locate_signal_model, get_position_pickle, get_position_table
21
+ from celldetective.io import locate_signal_model, get_position_pickle, get_position_table
22
22
  from celldetective.tracking import clean_trajectories, interpolate_nan_properties
23
23
  from celldetective.utils import regression_plot, train_test_split, compute_weights
24
24
  import matplotlib.pyplot as plt
25
25
  from natsort import natsorted
26
26
  from glob import glob
27
- import shutil
28
27
  import random
29
28
  from celldetective.utils import color_from_status, color_from_class
30
29
  from math import floor, ceil
@@ -3074,7 +3073,7 @@ def mean_signal(df, signal_name, class_col, time_col=None, class_value=[0], retu
3074
3073
  3. Tracks with missing or NaN values in the specified signal are ignored during calculation.
3075
3074
  4. Tracks are aligned based on their 'FRAME' values and the specified `time_col` (if provided).
3076
3075
  """
3077
-
3076
+
3078
3077
  assert signal_name in list(df.columns),"The signal you want to plot is not one of the measured features."
3079
3078
  if isinstance(class_value,int):
3080
3079
  class_value = [class_value]
@@ -3083,6 +3082,11 @@ def mean_signal(df, signal_name, class_col, time_col=None, class_value=[0], retu
3083
3082
  max_duration = ceil(np.amax(df.groupby(['position','TRACK_ID']).size().values))
3084
3083
  else:
3085
3084
  max_duration = forced_max_duration
3085
+
3086
+ abs_time = False
3087
+ if isinstance(time_col, (int,float)):
3088
+ abs_time = True
3089
+
3086
3090
  n_tracks = len(df.groupby(['position','TRACK_ID']))
3087
3091
  signal_matrix = np.zeros((n_tracks,int(max_duration)*2 + 1))
3088
3092
  signal_matrix[:,:] = np.nan
@@ -3094,11 +3098,16 @@ def mean_signal(df, signal_name, class_col, time_col=None, class_value=[0], retu
3094
3098
  cclass = track_group[class_col].to_numpy()[0]
3095
3099
  if cclass != 0:
3096
3100
  ref_time = 0
3101
+ if abs_time:
3102
+ ref_time = time_col
3097
3103
  else:
3098
- try:
3099
- ref_time = floor(track_group[time_col].to_numpy()[0])
3100
- except:
3101
- continue
3104
+ if not abs_time:
3105
+ try:
3106
+ ref_time = floor(track_group[time_col].to_numpy()[0])
3107
+ except:
3108
+ continue
3109
+ else:
3110
+ ref_time = time_col
3102
3111
  if conflict_mode=='mean':
3103
3112
  signal = track_group.groupby('FRAME')[signal_name].mean().to_numpy()
3104
3113
  elif conflict_mode=='first':
celldetective/tracking.py CHANGED
@@ -10,7 +10,6 @@ from celldetective.measure import measure_features
10
10
  from celldetective.utils import rename_intensity_column, velocity_per_track
11
11
  from celldetective.io import view_on_napari_btrack, interpret_tracking_configuration
12
12
 
13
- from btrack.datasets import cell_config
14
13
  import os
15
14
  import subprocess
16
15
 
@@ -153,6 +152,8 @@ def track(labels, configuration=None, stack=None, spatial_calibration=1, feature
153
152
  df_temp = pd.DataFrame(x_scaled, columns=columns, index = df.index)
154
153
  df[columns] = df_temp
155
154
 
155
+ # set dummy features to NaN
156
+ df.loc[df['dummy'],['class_id']+columns] = np.nan
156
157
  df = df.sort_values(by=[column_labels['track'],column_labels['time']])
157
158
  df = velocity_per_track(df, window_size=3, mode='bi')
158
159
 
celldetective/utils.py CHANGED
@@ -17,7 +17,6 @@ import json
17
17
  from csbdeep.utils import normalize_mi_ma
18
18
  from glob import glob
19
19
  from urllib.request import urlopen
20
- from urllib.parse import urlparse
21
20
  import zipfile
22
21
  from tqdm import tqdm
23
22
  import shutil
@@ -2435,4 +2434,45 @@ def collapse_trajectories_by_status(df, status=None, projection='mean', populati
2435
2434
  group_table = group_table.sort_values(by=groupby_columns + [status],ignore_index=True)
2436
2435
  group_table = group_table.reset_index(drop=True)
2437
2436
 
2438
- return group_table
2437
+ return group_table
2438
+
2439
+ def step_function(t, t_shift, dt):
2440
+
2441
+ """
2442
+ Computes a step function using the logistic sigmoid function.
2443
+
2444
+ This function calculates the value of a sigmoid function, which is often used to model
2445
+ a step change or transition. The sigmoid function is defined as:
2446
+
2447
+ .. math::
2448
+ f(t) = \\frac{1}{1 + \\exp{\\left( -\\frac{t - t_{shift}}{dt} \\right)}}
2449
+
2450
+ where `t` is the input variable, `t_shift` is the point of the transition, and `dt` controls
2451
+ the steepness of the transition.
2452
+
2453
+ Parameters
2454
+ ----------
2455
+ t : array_like
2456
+ The input values for which the step function will be computed.
2457
+ t_shift : float
2458
+ The point in the `t` domain where the transition occurs.
2459
+ dt : float
2460
+ The parameter that controls the steepness of the transition. Smaller values make the
2461
+ transition steeper, while larger values make it smoother.
2462
+
2463
+ Returns
2464
+ -------
2465
+ array_like
2466
+ The computed values of the step function for each value in `t`.
2467
+
2468
+ Examples
2469
+ --------
2470
+ >>> import numpy as np
2471
+ >>> t = np.array([0, 1, 2, 3, 4, 5])
2472
+ >>> t_shift = 2
2473
+ >>> dt = 1
2474
+ >>> step_function(t, t_shift, dt)
2475
+ array([0.26894142, 0.37754067, 0.5 , 0.62245933, 0.73105858, 0.81757448])
2476
+ """
2477
+
2478
+ return 1/(1+np.exp(-(t-t_shift)/dt))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: celldetective
3
- Version: 1.2.1
3
+ Version: 1.2.2.post1
4
4
  Summary: description
5
5
  Home-page: http://github.com/remyeltorro/celldetective
6
6
  Author: Rémy Torro
@@ -12,14 +12,14 @@ Requires-Dist: wheel
12
12
  Requires-Dist: nbsphinx
13
13
  Requires-Dist: nbsphinx-link
14
14
  Requires-Dist: sphinx-rtd-theme
15
- Requires-Dist: sphinx==5.0.2
16
- Requires-Dist: jinja2<3.1
15
+ Requires-Dist: sphinx
16
+ Requires-Dist: jinja2
17
17
  Requires-Dist: ipykernel
18
18
  Requires-Dist: stardist
19
19
  Requires-Dist: cellpose<3
20
20
  Requires-Dist: scikit-learn
21
21
  Requires-Dist: btrack
22
- Requires-Dist: tensorflow<=2.12.1
22
+ Requires-Dist: tensorflow~=2.15.0
23
23
  Requires-Dist: napari
24
24
  Requires-Dist: tqdm
25
25
  Requires-Dist: mahotas
@@ -32,9 +32,10 @@ Requires-Dist: seaborn
32
32
  Requires-Dist: opencv-python-headless==4.7.0.72
33
33
  Requires-Dist: liblapack
34
34
  Requires-Dist: gputools
35
- Requires-Dist: lmfit~=1.2.2
36
- Requires-Dist: superqt[cmap]>=0.6.1
35
+ Requires-Dist: lmfit
36
+ Requires-Dist: superqt[cmap]
37
37
  Requires-Dist: matplotlib-scalebar
38
+ Requires-Dist: numpy==1.26.4
38
39
 
39
40
  # Celldetective
40
41
 
@@ -165,23 +166,25 @@ steps.
165
166
 
166
167
  To use the software, you must install python, *e.g.* through
167
168
  [Anaconda](https://www.anaconda.com/download). We developed and tested
168
- the software in Python 3.9.18.
169
+ the software in Python 3.9 and more recently 3.11.
169
170
 
170
171
  # Installation
171
172
 
172
173
  ## Stable release
173
174
 
174
- Celldetective can be installed with `pip`:
175
+ Celldetective requires a version of Python between 3.9 and 3.11 (included). If your Python version is older or more recent, consider using `conda` to create an environment as described below.
176
+
177
+ With the proper Python version, Celldetective can be directly installed with `pip`:
175
178
 
176
179
  ``` bash
177
180
  pip install celldetective
178
181
  ```
179
182
 
180
- We recommend that you create an environment to use Celldetective, *e.g.*
183
+ We recommend that you create an environment to use Celldetective, to protect your package versions and fix the Python version *e.g.*
181
184
  with `conda`:
182
185
 
183
186
  ``` bash
184
- conda create -n celldetective python=3.9.18 pyqt
187
+ conda create -n celldetective python=3.11 pyqt
185
188
  conda activate celldetective
186
189
  pip install celldetective
187
190
  ```
@@ -207,6 +210,10 @@ will be immediately available in the python environment:
207
210
  git clone git://github.com/remyeltorro/celldetective.git
208
211
  cd celldetective
209
212
 
213
+ # optional: create an environment
214
+ conda create -n celldetective python=3.11 pyqt
215
+ conda activate celldetective
216
+
210
217
  # install the celldetective package in editable/development mode
211
218
  pip install -r requirements.txt
212
219
  pip install -e .
@@ -229,10 +236,10 @@ with package requirements for other projects. Run the following lines to
229
236
  create an environment named \"celldetective\":
230
237
 
231
238
  ``` bash
232
- conda create -n celldetective python=3.9.18 pyqt
239
+ conda create -n celldetective python=3.11 pyqt
233
240
  conda activate celldetective
234
241
  pip install -r requirements.txt
235
- pip install .
242
+ pip install -e .
236
243
  ```
237
244
 
238
245
  The installation of the dependencies will take a few minutes (up to half
@@ -0,0 +1,86 @@
1
+ celldetective/__init__.py,sha256=PH25g2_AZt7N5Jg1KB3YT9wFvfMr9lIb2WxYzmDqlX4,105
2
+ celldetective/__main__.py,sha256=Ua_3mAlW5Y53ih3rkZrAeYfvOc8-Xz6sZosyUCFtTZI,14842
3
+ celldetective/events.py,sha256=D07LyzBerq4QkXKRhMj0ZChzNkqBrW45E9TgBtEa3tk,4735
4
+ celldetective/extra_properties.py,sha256=8DkxTvVs7gASsnnGurVZ3_zt6uR0pvvJhBKO2LC6hGk,5118
5
+ celldetective/filters.py,sha256=b0qKwHor1fvNA_dHovP17nQz8EsW5YlyhT2TJnayn08,3615
6
+ celldetective/io.py,sha256=ZenCko4gdyJE0hwdTb2DWEXhUJRoF5FwAcpgZRdZtAo,85024
7
+ celldetective/measure.py,sha256=7bfCUdLfJbGmFWWwhu_C9-l1buj_-We7izBaFWTe4ok,54910
8
+ celldetective/neighborhood.py,sha256=GjF_fTmtcU8jq5XZT-DnDSp28VDTrsaHjIGJG7W2Ppk,52799
9
+ celldetective/preprocessing.py,sha256=iV5or20s8XPJXQZDsWzis7OBaqzPDyAo_cwcDVDuX5A,38188
10
+ celldetective/relative_measurements.py,sha256=qPHC6gtUaICNGKh6Qfh8y6NA4OUJauGcaj9_TUbrswg,24998
11
+ celldetective/segmentation.py,sha256=H_6BH_RKaG6injUPZ3gQzQ112pMyzQ33u5GEpLE9dsQ,30426
12
+ celldetective/signals.py,sha256=485axzJwE3xsSsN4AmBQlZ2at7uWu9QRg0XrUHvLBUE,120552
13
+ celldetective/tracking.py,sha256=HGeOtfQ-nmpaea9_Q-sq2WcwZfdPXRH028JyFlt6eUs,37901
14
+ celldetective/utils.py,sha256=UkRHPHWZixj8HOI8pc79jgsRjWvpCkF-2lfJ9JfddgA,86311
15
+ celldetective/datasets/segmentation_annotations/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ celldetective/datasets/signal_annotations/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ celldetective/gui/__init__.py,sha256=2_r2xfOj4_2xj0yBkCTIfzlF94AHKm-j6Pvpd7DddQc,989
18
+ celldetective/gui/about.py,sha256=fed6nh-WwKy6bEbavy6L62P0CQB8VsOO0PajOjHsnFk,1694
19
+ celldetective/gui/analyze_block.py,sha256=sat8RECEeZxlaconZZIxI0IrIjwJo121PcBXqJmA1-o,24756
20
+ celldetective/gui/btrack_options.py,sha256=OrvbG5coZhLRk5jtXiLFJu34z1hWHN9kHkBiZ7XMZoI,39269
21
+ celldetective/gui/classifier_widget.py,sha256=hyonoHikEkqEsxtE1PZ6cFAn72KcxfSIp8H8PlFPL1c,15822
22
+ celldetective/gui/configure_new_exp.py,sha256=Eyr-M4FH-4xrUJbIGNdKXAtXb_ULr8lCol26JSzXEww,20125
23
+ celldetective/gui/control_panel.py,sha256=vU6dfjiO2nmDiY-qF2xCzcwDih6M87ItYTJOeOP51c8,19006
24
+ celldetective/gui/generic_signal_plot.py,sha256=OzlFr2RxspkyxW1YIhl_c3q63RXAngMPouYPhEtk0S0,29509
25
+ celldetective/gui/gui_utils.py,sha256=snYUefDEFpIP8RlsNG4QhfI0rLiVE9_t1E8Q7dMIj4k,27747
26
+ celldetective/gui/json_readers.py,sha256=Su3angSobroeGrrumGgQcs3Cr_9l9p52-Hfm3qneVcI,3664
27
+ celldetective/gui/layouts.py,sha256=feeAYh7I21ZgH-x4I7lg2DAvz5PBm71D7MovCrtb9QE,47325
28
+ celldetective/gui/measurement_options.py,sha256=fDm8mlak8o9jC8OHhmou9kAmrVY8fCZ8ZKZ0bimhuPo,47133
29
+ celldetective/gui/neighborhood_options.py,sha256=BvWwsIX1KWogUgHWRZptqY3ZRmH1aj7r8tiLmbRFhW4,19783
30
+ celldetective/gui/plot_measurements.py,sha256=SBFkY3542hW4H_vllOCMxMOgBz09KUE2FLhhgI8avXk,51024
31
+ celldetective/gui/plot_signals_ui.py,sha256=dQINAOyOmAOHMfmjfCsx1hJ7HGeCgNCq8kESuADbQqo,15864
32
+ celldetective/gui/process_block.py,sha256=PdgKKEfr-GFad3P1y0n9LB_OaIBvuBuaQdBRtzRNhDg,72245
33
+ celldetective/gui/retrain_segmentation_model_options.py,sha256=eGGrimwmNfJXRPRpZ6NZ74TWx6TK70HoNRHnJl1_8XQ,22292
34
+ celldetective/gui/retrain_signal_model_options.py,sha256=XigNdGlNu3KWB_MYBcKQhfXjcWwVZNMmu0qmxNoo14E,21919
35
+ celldetective/gui/seg_model_loader.py,sha256=vWvPMU6nkTiQfI-x2WjQHrdJGFdV4a4Ne-4YIOq_YZ8,18153
36
+ celldetective/gui/signal_annotator.py,sha256=5Ho7o6lze3BWUbCKJ-53Jh4S46QlTmUq237FAAOfECA,87069
37
+ celldetective/gui/signal_annotator2.py,sha256=Y43JSCg3bO_QL7zsqdeQ-FY8TNq_5WiV1cHO-knK0QE,109375
38
+ celldetective/gui/signal_annotator_options.py,sha256=ztFFgA70SJ0QkntxYGsgDNCvSuSR5GjF7_J6pYVYc1g,11020
39
+ celldetective/gui/styles.py,sha256=fup0_U1Zk0IJAjyruHde_r-X7d7cTMcrpPLPl-HuKAM,4820
40
+ celldetective/gui/survival_ui.py,sha256=tzvtI0eC0bgd7Lfm20HqU7rfCJ60gy9a_Sc9cZLSKhs,9439
41
+ celldetective/gui/tableUI.py,sha256=9yJ4CjeNAQoYdHXfsVvD0qr_IdYWuQwIBhvfU3QoNtc,40602
42
+ celldetective/gui/thresholds_gui.py,sha256=t1hTDdaJTJWHBt9vtRCE4B1TsVHhobQwCpKfntVgaQI,50510
43
+ celldetective/gui/viewers.py,sha256=mCyE9DaUX2rGq65oYEwyEfNtEUPrHdoFNg2MRp1kXs4,27701
44
+ celldetective/icons/logo-large.png,sha256=FXSwV3u6zEKcfpuSn4unnqB0oUnN9cHqQ9BCKWytrpg,36631
45
+ celldetective/icons/logo.png,sha256=wV2OS8_dU5Td5cgdPbCOU3JpMpTwNuYLnfVcnQX0tJA,2437
46
+ celldetective/icons/signals_icon.png,sha256=vEiKoqWTtN0-uJgVqtAlwCuP-f4QeWYOlO3sdp2tg2w,3969
47
+ celldetective/icons/splash-test.png,sha256=W9smcuuwJUF9DU-rz4aACx7_rCmGRsxYUGPBDlDnrJk,17523
48
+ celldetective/icons/splash.png,sha256=J_1jPJylxwHGzGF1xCGocc-BmylHtHTII9VJSLKnezY,17895
49
+ celldetective/icons/splash0.png,sha256=qVXsrYUinm5g6-vbHcqwyjh8SIqs9lEqPWnPa1WijaQ,14233
50
+ celldetective/icons/survival2.png,sha256=8zsualD7d9VPAecoFA4Om9TFARErqpJzMg6U7XANXf4,4479
51
+ celldetective/icons/vignette_signals2.png,sha256=hsVOdQDpEfMGM45aaSeacEm3lvxbquRKKYutiS9qoS0,20743
52
+ celldetective/icons/vignette_signals2.svg,sha256=muGNcQudV1jG-bmFd9FwV-Wb8PcrRV5osdZ7pHR7Ekk,5947
53
+ celldetective/links/zenodo.json,sha256=7WKRuZY7MHTR-IChWBbU0i47H_479NtlxsCGaJn9-xM,22728
54
+ celldetective/models/pair_signal_detection/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ celldetective/models/segmentation_effectors/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
+ celldetective/models/segmentation_generic/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ celldetective/models/segmentation_targets/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ celldetective/models/signal_detection/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
+ celldetective/models/tracking_configs/mcf7.json,sha256=iDjb8i6yxs0GleW39dvY3Ld5bZJatlXJrwI8PG3vCT0,1780
60
+ celldetective/models/tracking_configs/ricm.json,sha256=L-vmwCR1f89U-qnH2Ms0cBfPFR_dxIWoe2ccH8V-QBA,2727
61
+ celldetective/models/tracking_configs/ricm2.json,sha256=DDjJ6ScYcDWvlsy7ujPID8v8H28vcNcMuZmNR8XmGxo,2718
62
+ celldetective/scripts/analyze_signals.py,sha256=YE05wZujl2hQFWkvqATBcCx-cAd_V3RxnvKoh0SB7To,2194
63
+ celldetective/scripts/measure_cells.py,sha256=L9TRc8B1_Y1jco29fWm4MVNicTFQNVeA_4Vbu3o_H1o,11735
64
+ celldetective/scripts/measure_relative.py,sha256=L_NjIUfHSGupkAKLZkubBHJdZh0ugPhCTJem80b0zMM,4261
65
+ celldetective/scripts/segment_cells.py,sha256=bnNacgp_6qpb1fvwPizxVctsUNiFBegKalo-PSpXPEU,8262
66
+ celldetective/scripts/segment_cells_thresholds.py,sha256=6ERg-hxdHMSgXPQSBPtYt2lccTlkz9ZLktYgb57Avmw,5168
67
+ celldetective/scripts/track_cells.py,sha256=ezNpenAYBz010iMZNRIk0qwGAceiXRLvY7ZxoQcT2IM,8052
68
+ celldetective/scripts/train_segmentation_model.py,sha256=XExaGg8kkdirgN206J0mwiWtqeRE076-Ld2b89tReAI,9229
69
+ celldetective/scripts/train_signal_model.py,sha256=D643wKVYg-LWHF2VU9FWKSuazXrpCpQK0YjGqoIimD0,3167
70
+ tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
+ tests/test_events.py,sha256=eLFwwEEJfQAdwhews3-fn1HSvzozcNNFN_Qn0gOvQkE,685
72
+ tests/test_filters.py,sha256=iJksl_HgquqGzPPv46qpNtlD4rkBpZ5eVtIotgZ7LDs,656
73
+ tests/test_io.py,sha256=gk5FmoI7ANEczUtNXYRxc48KzkfYzemwS_eYaLq4_NI,2093
74
+ tests/test_measure.py,sha256=FEUAs1rVHylvIvubCb0bJDNGZLVmkgXNgI3NaGQ1dA8,4542
75
+ tests/test_neighborhood.py,sha256=gk5FmoI7ANEczUtNXYRxc48KzkfYzemwS_eYaLq4_NI,2093
76
+ tests/test_preprocessing.py,sha256=FI-Wk-kc4wWmOQg_NLCUIZC1oti396wr5cC-BauBai0,1436
77
+ tests/test_segmentation.py,sha256=_HB8CCq-Ci6amf0xAmDIUuwtBUU_EGpgqLvcvSHrGug,3427
78
+ tests/test_signals.py,sha256=No4cah6KxplhDcKXnU8RrA7eDla4hWw6ccf7xGnBokU,3599
79
+ tests/test_tracking.py,sha256=8hebWSqEIuttD1ABn-6dKCT7EXKRR7-4RwyFWi1WPFo,8800
80
+ tests/test_utils.py,sha256=NKRCAC1d89aBK5cWjTb7-pInYow901RrT-uBlIdz4KI,3692
81
+ celldetective-1.2.2.post1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
82
+ celldetective-1.2.2.post1.dist-info/METADATA,sha256=TUIJ7f5xLHoW8DMdQYzA3TQjU6fIm83Xo8DHV-99-QA,12839
83
+ celldetective-1.2.2.post1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
84
+ celldetective-1.2.2.post1.dist-info/entry_points.txt,sha256=2NU6_EOByvPxqBbCvjwxlVlvnQreqZ3BKRCVIKEv3dg,62
85
+ celldetective-1.2.2.post1.dist-info/top_level.txt,sha256=6rsIKKfGMKgud7HPuATcpq6EhdXwcg_yknBVWn9x4C4,20
86
+ celldetective-1.2.2.post1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (73.0.1)
2
+ Generator: setuptools (75.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,29 +0,0 @@
1
- {
2
- "channels": [
3
- "effector_fluo_channel",
4
- "None"
5
- ],
6
- "diameter": 30.0,
7
- "cellprob_threshold": 0.0,
8
- "flow_threshold": 0.4,
9
- "normalization_percentile": [
10
- true,
11
- true
12
- ],
13
- "normalization_clip": [
14
- true,
15
- true
16
- ],
17
- "normalization_values": [
18
- [
19
- 0.5,
20
- 99.0
21
- ],
22
- [
23
- 1.0,
24
- 99.0
25
- ]
26
- ],
27
- "model_type": "cellpose",
28
- "spatial_calibration": 0.21783999999999998
29
- }
@@ -1,37 +0,0 @@
1
- {
2
- "model_name": "cp-cfse-transfer",
3
- "model_type": "cellpose",
4
- "pretrained": "/home/limozin/Documents/GitHub/celldetective/celldetective/models/segmentation_generic/CP_cyto2",
5
- "spatial_calibration": 0.21783999999999998,
6
- "channel_option": [
7
- "effector_fluo_channel",
8
- "None"
9
- ],
10
- "normalization_percentile": [
11
- true,
12
- true
13
- ],
14
- "normalization_clip": [
15
- true,
16
- true
17
- ],
18
- "normalization_values": [
19
- [
20
- 0.5,
21
- 99.0
22
- ],
23
- [
24
- 1.0,
25
- 99.0
26
- ]
27
- ],
28
- "ds": [
29
- "/home/limozin/Desktop/primNK_w_MCF7/dataset"
30
- ],
31
- "augmentation_factor": 1.5,
32
- "validation_split": 0.2,
33
- "learning_rate": 0.001,
34
- "batch_size": 8,
35
- "epochs": 3000,
36
- "target_directory": "/home/limozin/Documents/GitHub/celldetective/celldetective/models/segmentation_effectors"
37
- }