spacr 0.2.4__py3-none-any.whl → 0.2.8__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 (63) hide show
  1. spacr/__init__.py +1 -11
  2. spacr/core.py +277 -349
  3. spacr/deep_spacr.py +248 -269
  4. spacr/gui.py +58 -54
  5. spacr/gui_core.py +689 -535
  6. spacr/gui_elements.py +1002 -153
  7. spacr/gui_utils.py +452 -107
  8. spacr/io.py +158 -91
  9. spacr/measure.py +199 -151
  10. spacr/plot.py +159 -47
  11. spacr/resources/font/open_sans/OFL.txt +93 -0
  12. spacr/resources/font/open_sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  13. spacr/resources/font/open_sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
  14. spacr/resources/font/open_sans/README.txt +100 -0
  15. spacr/resources/font/open_sans/static/OpenSans-Bold.ttf +0 -0
  16. spacr/resources/font/open_sans/static/OpenSans-BoldItalic.ttf +0 -0
  17. spacr/resources/font/open_sans/static/OpenSans-ExtraBold.ttf +0 -0
  18. spacr/resources/font/open_sans/static/OpenSans-ExtraBoldItalic.ttf +0 -0
  19. spacr/resources/font/open_sans/static/OpenSans-Italic.ttf +0 -0
  20. spacr/resources/font/open_sans/static/OpenSans-Light.ttf +0 -0
  21. spacr/resources/font/open_sans/static/OpenSans-LightItalic.ttf +0 -0
  22. spacr/resources/font/open_sans/static/OpenSans-Medium.ttf +0 -0
  23. spacr/resources/font/open_sans/static/OpenSans-MediumItalic.ttf +0 -0
  24. spacr/resources/font/open_sans/static/OpenSans-Regular.ttf +0 -0
  25. spacr/resources/font/open_sans/static/OpenSans-SemiBold.ttf +0 -0
  26. spacr/resources/font/open_sans/static/OpenSans-SemiBoldItalic.ttf +0 -0
  27. spacr/resources/font/open_sans/static/OpenSans_Condensed-Bold.ttf +0 -0
  28. spacr/resources/font/open_sans/static/OpenSans_Condensed-BoldItalic.ttf +0 -0
  29. spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBold.ttf +0 -0
  30. spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBoldItalic.ttf +0 -0
  31. spacr/resources/font/open_sans/static/OpenSans_Condensed-Italic.ttf +0 -0
  32. spacr/resources/font/open_sans/static/OpenSans_Condensed-Light.ttf +0 -0
  33. spacr/resources/font/open_sans/static/OpenSans_Condensed-LightItalic.ttf +0 -0
  34. spacr/resources/font/open_sans/static/OpenSans_Condensed-Medium.ttf +0 -0
  35. spacr/resources/font/open_sans/static/OpenSans_Condensed-MediumItalic.ttf +0 -0
  36. spacr/resources/font/open_sans/static/OpenSans_Condensed-Regular.ttf +0 -0
  37. spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBold.ttf +0 -0
  38. spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBoldItalic.ttf +0 -0
  39. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Bold.ttf +0 -0
  40. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-BoldItalic.ttf +0 -0
  41. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBold.ttf +0 -0
  42. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBoldItalic.ttf +0 -0
  43. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Italic.ttf +0 -0
  44. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Light.ttf +0 -0
  45. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-LightItalic.ttf +0 -0
  46. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Medium.ttf +0 -0
  47. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-MediumItalic.ttf +0 -0
  48. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Regular.ttf +0 -0
  49. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBold.ttf +0 -0
  50. spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBoldItalic.ttf +0 -0
  51. spacr/resources/icons/logo.pdf +2786 -6
  52. spacr/resources/icons/logo_spacr.png +0 -0
  53. spacr/resources/icons/logo_spacr_1.png +0 -0
  54. spacr/sequencing.py +477 -587
  55. spacr/settings.py +217 -144
  56. spacr/utils.py +46 -46
  57. {spacr-0.2.4.dist-info → spacr-0.2.8.dist-info}/METADATA +46 -35
  58. spacr-0.2.8.dist-info/RECORD +100 -0
  59. {spacr-0.2.4.dist-info → spacr-0.2.8.dist-info}/WHEEL +1 -1
  60. spacr-0.2.4.dist-info/RECORD +0 -58
  61. {spacr-0.2.4.dist-info → spacr-0.2.8.dist-info}/LICENSE +0 -0
  62. {spacr-0.2.4.dist-info → spacr-0.2.8.dist-info}/entry_points.txt +0 -0
  63. {spacr-0.2.4.dist-info → spacr-0.2.8.dist-info}/top_level.txt +0 -0
spacr/utils.py CHANGED
@@ -1,4 +1,4 @@
1
- import sys, os, re, sqlite3, torch, torchvision, random, string, shutil, cv2, tarfile, glob, psutil, platform, signal
1
+ import sys, os, re, sqlite3, torch, torchvision, random, string, shutil, cv2, tarfile, glob, psutil, platform, gzip, subprocess
2
2
 
3
3
  import numpy as np
4
4
  from cellpose import models as cp_models
@@ -87,33 +87,18 @@ from scipy.stats import f_oneway, kruskal
87
87
  from sklearn.cluster import KMeans
88
88
  from scipy import stats
89
89
 
90
- def print_progress_v1(files_processed, files_to_process, n_jobs, time_ls=None, batch_size=None, operation_type=""):
91
- if isinstance(files_processed, list):
92
- files_processed = len(files_processed)
93
- if isinstance(files_to_process, list):
94
- files_to_process = len(files_to_process)
95
- if isinstance(batch_size, list):
96
- batch_size = len(batch_size)
97
-
98
- if time_ls is not None:
99
- average_time = np.mean(time_ls) if len(time_ls) > 0 else 0
100
- time_left = (((files_to_process-files_processed)*average_time)/n_jobs)/60
101
- if batch_size is None:
102
- print(f'Time/image: {average_time:.3f}sec')
103
- print(f'Time_left: {time_left:.3f} min.')
104
- else:
105
- average_time_img = average_time/batch_size
106
- print(f'Time/batch:{average_time:.3f}sec')
107
- print(f'Time/image {average_time_img:.3f}')
108
- print(f'Time_left: {time_left:.3f} min.')
109
-
110
- print(f'Progress: {files_processed}/{files_to_process}, operation_type: {operation_type}')
90
+ def save_settings(settings, name='settings'):
91
+
92
+ settings_df = pd.DataFrame(list(settings.items()), columns=['Key', 'Value'])
93
+ settings_csv = os.path.join(settings['src'],'settings',f'{name}.csv')
94
+ os.makedirs(os.path.join(settings['src'],'settings'), exist_ok=True)
95
+ settings_df.to_csv(settings_csv, index=False)
111
96
 
112
97
  def print_progress(files_processed, files_to_process, n_jobs, time_ls=None, batch_size=None, operation_type=""):
113
98
  if isinstance(files_processed, list):
114
- files_processed = len(files_processed)
99
+ files_processed = len(set(files_processed))
115
100
  if isinstance(files_to_process, list):
116
- files_to_process = len(files_to_process)
101
+ files_to_process = len(set(files_to_process))
117
102
  if isinstance(batch_size, list):
118
103
  batch_size = len(batch_size)
119
104
 
@@ -137,10 +122,9 @@ def print_progress(files_processed, files_to_process, n_jobs, time_ls=None, batc
137
122
  else:
138
123
  average_time_img = average_time / batch_size
139
124
  time_info = f'Time/batch: {average_time:.3f}sec, Time/image: {average_time_img:.3f}sec, Time_left: {time_left:.3f} min.'
140
-
141
- print(f'Progress: {files_processed}/{files_to_process}, operation_type: {operation_type} {time_info}')
142
-
143
-
125
+ else:
126
+ time_info = None
127
+ print(f'Progress: {files_processed}/{files_to_process}, operation_type: {operation_type}, {time_info}')
144
128
 
145
129
  def reset_mp():
146
130
  current_method = get_start_method()
@@ -1670,7 +1654,7 @@ def split_my_dataset(dataset, split_ratio=0.1):
1670
1654
  val_dataset = Subset(dataset, val_indices)
1671
1655
  return train_dataset, val_dataset
1672
1656
 
1673
- def classification_metrics(all_labels, prediction_pos_probs, loader_name, loss, epoch):
1657
+ def classification_metrics(all_labels, prediction_pos_probs, loss, epoch):
1674
1658
  """
1675
1659
  Calculate classification metrics for binary classification.
1676
1660
 
@@ -1719,11 +1703,9 @@ def classification_metrics(all_labels, prediction_pos_probs, loader_name, loss,
1719
1703
  else:
1720
1704
  acc_nc = np.nan
1721
1705
  data_dict = {'accuracy': acc_all, 'neg_accuracy': acc_nc, 'pos_accuracy': acc_pc, 'loss':loss.item(),'prauc':pr_auc, 'optimal_threshold':optimal_threshold}
1722
- data_df = pd.DataFrame(data_dict, index=[str(epoch)+'_'+loader_name])
1706
+ data_df = pd.DataFrame(data_dict, index=[str(epoch)])
1723
1707
  return data_df
1724
1708
 
1725
-
1726
-
1727
1709
  def compute_irm_penalty(losses, dummy_w, device):
1728
1710
  """
1729
1711
  Computes the Invariant Risk Minimization (IRM) penalty.
@@ -1761,7 +1743,7 @@ def compute_irm_penalty(losses, dummy_w, device):
1761
1743
  # summary(base_model, (channels, height, width))
1762
1744
  # return
1763
1745
 
1764
- def choose_model(model_type, device, init_weights=True, dropout_rate=0, use_checkpoint=False, channels=3, height=224, width=224, chan_dict=None, num_classes=2):
1746
+ def choose_model(model_type, device, init_weights=True, dropout_rate=0, use_checkpoint=False, channels=3, height=224, width=224, chan_dict=None, num_classes=2, verbose=False):
1765
1747
  """
1766
1748
  Choose a model for classification.
1767
1749
 
@@ -1793,7 +1775,7 @@ def choose_model(model_type, device, init_weights=True, dropout_rate=0, use_chec
1793
1775
  print(f'Invalid model_type: {model_type}. Compatible model_types: {model_types}')
1794
1776
  return
1795
1777
 
1796
- print(f'\rModel parameters: Architecture: {model_type} init_weights: {init_weights} dropout_rate: {dropout_rate} use_checkpoint: {use_checkpoint}', end='\r', flush=True)
1778
+ print(f'Model parameters: Architecture: {model_type} init_weights: {init_weights} dropout_rate: {dropout_rate} use_checkpoint: {use_checkpoint}', end='\r', flush=True)
1797
1779
 
1798
1780
  if model_type == 'custom':
1799
1781
 
@@ -1804,8 +1786,8 @@ def choose_model(model_type, device, init_weights=True, dropout_rate=0, use_chec
1804
1786
  else:
1805
1787
  print(f'Compatible model_types: {model_types}')
1806
1788
  raise ValueError(f"Invalid model_type: {model_type}")
1807
-
1808
- print(base_model)
1789
+ if verbose:
1790
+ print(base_model)
1809
1791
 
1810
1792
  return base_model
1811
1793
 
@@ -2989,11 +2971,13 @@ def _choose_model(model_name, device, object_type='cell', restore_type=None, obj
2989
2971
  if restore_type == None:
2990
2972
  if model_name in ['cyto', 'cyto2', 'cyto3', 'nuclei']:
2991
2973
  model = cp_models.Cellpose(gpu=torch.cuda.is_available(), model_type=model_name, device=device)
2992
-
2974
+ return model
2993
2975
  else:
2994
2976
  if object_type == 'nucleus':
2995
2977
  restore = f'{type}_nuclei'
2996
2978
  model = denoise.CellposeDenoiseModel(gpu=torch.cuda.is_available(), model_type="nuclei",restore_type=restore, chan2_restore=False, device=device)
2979
+ return model
2980
+
2997
2981
  else:
2998
2982
  restore = f'{type}_cyto3'
2999
2983
  if model_name =='cyto2':
@@ -3001,8 +2985,7 @@ def _choose_model(model_name, device, object_type='cell', restore_type=None, obj
3001
2985
  if model_name =='cyto':
3002
2986
  chan2_restore = False
3003
2987
  model = denoise.CellposeDenoiseModel(gpu=torch.cuda.is_available(), model_type="cyto3",restore_type=restore, chan2_restore=chan2_restore, device=device)
3004
-
3005
- return model
2988
+ return model
3006
2989
 
3007
2990
  class SelectChannels:
3008
2991
  def __init__(self, channels):
@@ -3469,7 +3452,7 @@ def setup_plot(figuresize, black_background):
3469
3452
  fig, ax = plt.subplots(1, 1, figsize=(figuresize, figuresize))
3470
3453
  return fig, ax
3471
3454
 
3472
- def plot_clusters(ax, embedding, labels, colors, cluster_centers, plot_outlines, plot_points, smooth_lines, figuresize=50, dot_size=50, verbose=False):
3455
+ def plot_clusters(ax, embedding, labels, colors, cluster_centers, plot_outlines, plot_points, smooth_lines, figuresize=10, dot_size=50, verbose=False):
3473
3456
  unique_labels = np.unique(labels)
3474
3457
  for cluster_label, color, center in zip(unique_labels, colors, cluster_centers):
3475
3458
  cluster_data = embedding[labels == cluster_label]
@@ -3648,22 +3631,22 @@ def delete_folder(folder_path):
3648
3631
  def measure_test_mode(settings):
3649
3632
 
3650
3633
  if settings['test_mode']:
3651
- if not os.path.basename(settings['input_folder']) == 'test':
3652
- all_files = os.listdir(settings['input_folder'])
3634
+ if not os.path.basename(settings['src']) == 'test':
3635
+ all_files = os.listdir(settings['src'])
3653
3636
  random_files = random.sample(all_files, settings['test_nr'])
3654
3637
 
3655
- src = os.path.join(os.path.dirname(settings['input_folder']),'test', 'merged')
3638
+ src = os.path.join(os.path.dirname(settings['src']),'test', 'merged')
3656
3639
  if os.path.exists(src):
3657
3640
  delete_folder(src)
3658
3641
  os.makedirs(src, exist_ok=True)
3659
3642
 
3660
3643
  for file in random_files:
3661
- shutil.copy(os.path.join(settings['input_folder'], file), os.path.join(src,file))
3644
+ shutil.copy(os.path.join(settings['src'], file), os.path.join(src,file))
3662
3645
 
3663
- settings['input_folder'] = src
3646
+ settings['src'] = src
3664
3647
  print(f'Changed source folder to {src} for test mode')
3665
3648
  else:
3666
- print(f'Test mode enabled, using source folder {settings["input_folder"]}')
3649
+ print(f'Test mode enabled, using source folder {settings["src"]}')
3667
3650
 
3668
3651
  return settings
3669
3652
 
@@ -4444,3 +4427,20 @@ def correct_masks(src):
4444
4427
  cell_path = os.path.join(src,'norm_channel_stack', 'cell_mask_stack')
4445
4428
  convert_and_relabel_masks(cell_path)
4446
4429
  _load_and_concatenate_arrays(src, [0,1,2,3], 1, 0, 2)
4430
+
4431
+ def count_reads_in_fastq(fastq_file):
4432
+ count = 0
4433
+ with gzip.open(fastq_file, "rt") as f:
4434
+ for _ in f:
4435
+ count += 1
4436
+ return count // 4
4437
+
4438
+
4439
+ # Function to determine the CUDA version
4440
+ def get_cuda_version():
4441
+ try:
4442
+ output = subprocess.check_output(['nvcc', '--version'], stderr=subprocess.STDOUT).decode('utf-8')
4443
+ if 'release' in output:
4444
+ return output.split('release ')[1].split(',')[0].replace('.', '')
4445
+ except (subprocess.CalledProcessError, FileNotFoundError):
4446
+ return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spacr
3
- Version: 0.2.4
3
+ Version: 0.2.8
4
4
  Summary: Spatial phenotype analysis of crisp screens (SpaCr)
5
5
  Home-page: https://github.com/EinarOlafsson/spacr
6
6
  Author: Einar Birnir Olafsson
@@ -9,43 +9,54 @@ Classifier: Programming Language :: Python :: 3
9
9
  Classifier: License :: OSI Approved :: MIT License
10
10
  Classifier: Operating System :: OS Independent
11
11
  License-File: LICENSE
12
- Requires-Dist: torch <3.0,>=2.2.1
13
- Requires-Dist: torchvision <1.0,>=0.17.1
14
- Requires-Dist: torch-geometric <3.0,>=2.5.1
15
- Requires-Dist: numpy <2.0,>=1.26.4
16
- Requires-Dist: pandas <3.0,>=2.2.1
17
- Requires-Dist: statsmodels <1.0,>=0.14.1
18
- Requires-Dist: scikit-image <1.0,>=0.22.0
19
- Requires-Dist: scikit-learn <2.0,>=1.4.1
20
- Requires-Dist: seaborn <1.0,>=0.13.2
21
- Requires-Dist: matplotlib <4.0,>=3.8.3
22
- Requires-Dist: shap <1.0,>=0.45.0
23
- Requires-Dist: pillow <11.0,>=10.2.0
24
- Requires-Dist: imageio <3.0,>=2.34.0
25
- Requires-Dist: scipy <2.0,>=1.12.0
26
- Requires-Dist: ipywidgets <9.0,>=8.1.2
27
- Requires-Dist: mahotas <2.0,>=1.4.13
28
- Requires-Dist: btrack <1.0,>=0.6.5
29
- Requires-Dist: trackpy <1.0,>=0.6.2
30
- Requires-Dist: cellpose <4.0,>=3.0.6
31
- Requires-Dist: IPython <9.0,>=8.18.1
32
- Requires-Dist: opencv-python-headless <5.0,>=4.9.0.80
33
- Requires-Dist: umap-learn <1.0,>=0.5.6
34
- Requires-Dist: ttkthemes <4.0,>=3.2.2
35
- Requires-Dist: xgboost <3.0,>=2.0.3
36
- Requires-Dist: PyWavelets <2.0,>=1.6.0
37
- Requires-Dist: torchcam <1.0,>=0.4.0
38
- Requires-Dist: ttf-opensans >=2020.10.30
39
- Requires-Dist: customtkinter <6.0,>=5.2.2
40
- Requires-Dist: biopython <2.0,>=1.80
41
- Requires-Dist: lxml <6.0,>=5.1.0
42
- Requires-Dist: huggingface-hub <0.25,>=0.24.0
12
+ Requires-Dist: torch<3.0,>=2.0
13
+ Requires-Dist: torchvision<1.0,>=0.1
14
+ Requires-Dist: torch-geometric<3.0,>=2.5
15
+ Requires-Dist: numpy<2.0,>=1.26.4
16
+ Requires-Dist: bottleneck<2.0,>=1.3.6
17
+ Requires-Dist: numexpr<3.0,>=2.8.4
18
+ Requires-Dist: pandas<3.0,>=2.2.1
19
+ Requires-Dist: statsmodels<1.0,>=0.14.1
20
+ Requires-Dist: scikit-image<1.0,>=0.22.0
21
+ Requires-Dist: scikit-learn<2.0,>=1.4.1
22
+ Requires-Dist: seaborn<1.0,>=0.13.2
23
+ Requires-Dist: matplotlib<4.0,>=3.8.3
24
+ Requires-Dist: shap<1.0,>=0.45.0
25
+ Requires-Dist: pillow<11.0,>=10.2.0
26
+ Requires-Dist: imageio<3.0,>=2.34.0
27
+ Requires-Dist: scipy<2.0,>=1.12.0
28
+ Requires-Dist: ipywidgets<9.0,>=8.1.2
29
+ Requires-Dist: mahotas<2.0,>=1.4.13
30
+ Requires-Dist: btrack<1.0,>=0.6.5
31
+ Requires-Dist: trackpy<1.0,>=0.6.2
32
+ Requires-Dist: cellpose<4.0,>=3.0.6
33
+ Requires-Dist: IPython<9.0,>=8.18.1
34
+ Requires-Dist: opencv-python-headless<5.0,>=4.9.0.80
35
+ Requires-Dist: umap-learn<1.0,>=0.5.6
36
+ Requires-Dist: ttkthemes<4.0,>=3.2.2
37
+ Requires-Dist: xgboost<3.0,>=2.0.3
38
+ Requires-Dist: PyWavelets<2.0,>=1.6.0
39
+ Requires-Dist: torchcam<1.0,>=0.4.0
40
+ Requires-Dist: ttf-opensans>=2020.10.30
41
+ Requires-Dist: customtkinter<6.0,>=5.2.2
42
+ Requires-Dist: biopython<2.0,>=1.80
43
+ Requires-Dist: lxml<6.0,>=5.1.0
44
+ Requires-Dist: psutil<6.0,>=5.9.8
45
+ Requires-Dist: gputil<2.0,>=1.4.0
46
+ Requires-Dist: gpustat<2.0,>=1.1.1
47
+ Requires-Dist: pyautogui<1.0,>=0.9.54
48
+ Requires-Dist: tables<4.0,>=3.8.0
49
+ Requires-Dist: rapidfuzz<4.0,>=3.9
50
+ Requires-Dist: keyring<16.0,>=15.1
51
+ Requires-Dist: screeninfo<1.0,>=0.8.1
52
+ Requires-Dist: ipykernel
53
+ Requires-Dist: huggingface-hub<0.25,>=0.24.0
43
54
  Provides-Extra: dev
44
- Requires-Dist: pytest <3.11,>=3.9 ; extra == 'dev'
55
+ Requires-Dist: pytest<3.11,>=3.9; extra == "dev"
45
56
  Provides-Extra: full
46
- Requires-Dist: opencv-python ; extra == 'full'
57
+ Requires-Dist: opencv-python; extra == "full"
47
58
  Provides-Extra: headless
48
- Requires-Dist: opencv-python-headless ; extra == 'headless'
59
+ Requires-Dist: opencv-python-headless; extra == "headless"
49
60
 
50
61
  .. |Documentation Status| image:: https://readthedocs.org/projects/spacr/badge/?version=latest
51
62
  :target: https://spacr.readthedocs.io/en/latest/?badge=latest
@@ -0,0 +1,100 @@
1
+ spacr/__init__.py,sha256=8NZIlJOY2OzRCFjXvqusFL7BfyEJwNqB2lL8QNB-Kgo,1141
2
+ spacr/__main__.py,sha256=bkAJJD2kjIqOP-u1kLvct9jQQCeUXzlEjdgitwi1Lm8,75
3
+ spacr/app_annotate.py,sha256=nEIL7Fle9CDKGo3sucG_03DgjUQt5W1M1IHBIpVBr08,2171
4
+ spacr/app_classify.py,sha256=urTP_wlZ58hSyM5a19slYlBxN0PdC-9-ga0hvq8CGWc,165
5
+ spacr/app_make_masks.py,sha256=pqDhRpluiHZz-kPX2Zh_KbYe4TsU43qYBa_7f-rsjpw,1694
6
+ spacr/app_mask.py,sha256=l-dBY8ftzCMdDe6-pXc2Nh_u-idNL9G7UOARiLJBtds,153
7
+ spacr/app_measure.py,sha256=_K7APYIeOKpV6e_LcqabBjvEi7mfq9Fch8175x1x0k8,162
8
+ spacr/app_sequencing.py,sha256=DjG26jy4cpddnV8WOOAIiExtOe9MleVMY4MFa5uTo5w,157
9
+ spacr/app_umap.py,sha256=ZWAmf_OsIKbYvolYuWPMYhdlVe-n2CADoJulAizMiEo,153
10
+ spacr/chris.py,sha256=YlBjSgeZaY8HPy6jkrT_ISAnCMAKVfvCxF0I9eAZLFM,2418
11
+ spacr/core.py,sha256=B2KMyG6IrVtV9d4XQkXVblbvfFhgcMY2o-mtmqDVDic,146519
12
+ spacr/deep_spacr.py,sha256=a2YewgkQvLV-95NYJAutnojvJmX4S8z_wv6Tb-XIgUI,34484
13
+ spacr/graph_learning.py,sha256=1tR-ZxvXE3dBz1Saw7BeVFcrsUFu9OlUZeZVifih9eo,13070
14
+ spacr/gui.py,sha256=RMg0bgbUpO6JwaWuNVMwuVZ18j4WlER3nW0Eaa0YZ30,7883
15
+ spacr/gui_core.py,sha256=gTgsBzhZ5Q4vl6fT8VwrHWZ6BXWW5FNli8CE3WNMfv0,39986
16
+ spacr/gui_elements.py,sha256=OA514FUVRKAcdu9CFVOt7UEzn1vztakQ-rDyKqV0b9A,129771
17
+ spacr/gui_utils.py,sha256=pq_bmZ527S1j2s6McvqMhHNI05hJycBhHM8GY_jH9Ng,30597
18
+ spacr/io.py,sha256=ZtVNbEom8X8p_KfsuWw0glGwLg6S0CfwwevDPGdfiSc,117342
19
+ spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
20
+ spacr/measure.py,sha256=4rmzH_a5Y0s1qALVi6YRut3xpnkJXs5vzeTPCEf3QS8,54871
21
+ spacr/plot.py,sha256=xVnbML7WpAEzdJdrLeYRk6aPinZSiV2dLAeu4mh7n0k,73963
22
+ spacr/sequencing.py,sha256=y7EB8226B0b0gnGXt6jqBaFVATrM1Y89v3rtHb8XR_k,75746
23
+ spacr/settings.py,sha256=1PE6rQi0JoxbPSwEdEEWlJvrFW-dBkdY0WP461X-4FA,67839
24
+ spacr/sim.py,sha256=FveaVgBi3eypO2oVB5Dx-v0CC1Ny7UPfXkJiiRRodAk,71212
25
+ spacr/sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ spacr/timelapse.py,sha256=KMYCgHzf9LTZe-lWl5mvH2EjbKRE6OhpwdY13wEumGc,39504
27
+ spacr/utils.py,sha256=2v0N1GJPqGyhxLJGSl9cGaaLQr04ehzqcOxiD-zQ1WI,189142
28
+ spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
29
+ spacr/resources/font/open_sans/OFL.txt,sha256=bGMoWBRrE2RcdzDiuYiB8A9OVFlJ0sA2imWwce2DAdo,4484
30
+ "spacr/resources/font/open_sans/OpenSans-Italic-VariableFont_wdth,wght.ttf",sha256=QSoWv9h46CRX_fdlqFM3O2d3-PF3R1srnb4zUezcLm0,580280
31
+ "spacr/resources/font/open_sans/OpenSans-VariableFont_wdth,wght.ttf",sha256=E3RLvAefD0kuT7OxShXSQrjZYA-qzUI9WM35N_6nzms,529700
32
+ spacr/resources/font/open_sans/README.txt,sha256=-ZB4ocy30PWpgUpWm_djuTyBe_NiE1yEFG7H-zODBbA,3518
33
+ spacr/resources/font/open_sans/static/OpenSans-Bold.ttf,sha256=vHPEXlgQoJcevq7062w13shGB9vgLaZ1f59D2Vi22l8,130860
34
+ spacr/resources/font/open_sans/static/OpenSans-BoldItalic.ttf,sha256=tiGd9Fy-5vh25rKPZoNI4YB7H7mtEY6n1ocEHw0zI4Q,136360
35
+ spacr/resources/font/open_sans/static/OpenSans-ExtraBold.ttf,sha256=DAeBB3dmNBMRYr5Go4JFOZBAwr7MSV6T1p2bbt1lqY0,131244
36
+ spacr/resources/font/open_sans/static/OpenSans-ExtraBoldItalic.ttf,sha256=oDRGYhCusJ9__bySUKzNH1w-L7isv9O-iqFUmT7EPZs,136928
37
+ spacr/resources/font/open_sans/static/OpenSans-Italic.ttf,sha256=XqvWf-PYtbXu5kUE6p5KXvdmW2Q1d-8Rfzwy_aZ80p8,136604
38
+ spacr/resources/font/open_sans/static/OpenSans-Light.ttf,sha256=RurTiXjijzKtfcENRn7-jYtXhv-YAgw3GKKW-I738cw,130804
39
+ spacr/resources/font/open_sans/static/OpenSans-LightItalic.ttf,sha256=TqxQLBDa9mCOU-fbhteXaYkDc-u9VHKle7y3V4m8URA,136896
40
+ spacr/resources/font/open_sans/static/OpenSans-Medium.ttf,sha256=KrFWKUJKzobUKdvA5ae-sw0q89uZiisDpxYB7mllwzQ,130976
41
+ spacr/resources/font/open_sans/static/OpenSans-MediumItalic.ttf,sha256=v0NvTDTSySHQ8tSZfnhUBQpg_qqJu6zGBK6JatJUyos,136796
42
+ spacr/resources/font/open_sans/static/OpenSans-Regular.ttf,sha256=ZTBIAnfaYu_eBH6ybnin5TLRz67skWA-aNY4drlmnw0,130832
43
+ spacr/resources/font/open_sans/static/OpenSans-SemiBold.ttf,sha256=5gMTXMOxIAxyYLNPN_nLHyF4pCs2MDfiah4YJ2q3i_A,130760
44
+ spacr/resources/font/open_sans/static/OpenSans-SemiBoldItalic.ttf,sha256=sb8sWCggtXA9vNM5tdyXI1wUUYXQ-ruwnCJO-HIVJms,136724
45
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-Bold.ttf,sha256=CIWGlNIDGR-928YD8NguGNEEwnlBYir6S4_wzKyhK2A,130372
46
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-BoldItalic.ttf,sha256=dd_-wIDY3AM6l5T_JTYUo4D1H34Tmq5I2vEuvpqkrsQ,136240
47
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBold.ttf,sha256=98s7bdAITVn2b6nlI4tLuBkq1pSfmaFnPJELgyripT4,130812
48
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBoldItalic.ttf,sha256=Yh7na-RGr-rH4T_uNLv6cGefmQfyALsb1Qrf4c5xp30,136652
49
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-Italic.ttf,sha256=K8gjp2YPH9NLDCpX3ZrNRv7fCser4yoUbS6JXojzkQI,136588
50
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-Light.ttf,sha256=wcbhJiAM7-BGpJ82qwIMDcyEQJVnGXcTJzlFmAR4etY,130472
51
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-LightItalic.ttf,sha256=4eYPQJMjKmJ_QuIVuP6hQag4mVYxg5wVJFV8h28zd_c,136760
52
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-Medium.ttf,sha256=acH5RzYjKjt9ePPfhjwvdWHau9FxkgVNCCVzxUBUM6Y,130520
53
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-MediumItalic.ttf,sha256=vL_D1ucljgIr9sz4FSoWkg38QLVbxMglTBX0_01o3Vo,136700
54
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-Regular.ttf,sha256=9ZSB0mD3qvxsRpbdhgjMvhJxTJjmT41hQi7nWvuUl7U,130492
55
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBold.ttf,sha256=F5ld4DVfj5bpv37MfcrisKrdWosy6C85CVibgmFpMhw,130524
56
+ spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBoldItalic.ttf,sha256=bDVD8CkRaVOD96JJBURtnawSs8vspPKCNsBHW9SCBk0,136792
57
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Bold.ttf,sha256=saQFKWcgcpqcyyIV744l-gMfKKdKI6eC7gA7Eg2SqIc,131168
58
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-BoldItalic.ttf,sha256=wTHNHKW51uSs5WjuDM881pe51U25ezzIg4pKiQkkksE,137104
59
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBold.ttf,sha256=NWASkgz4LTrSPDAipCY41ul2Z5XDMeUleDE8C7Nt6RI,131744
60
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBoldItalic.ttf,sha256=PZSxtpkBYq79eWqnTh4KcwtaoAd_QFA6AYfdtvZI-bc,137584
61
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Italic.ttf,sha256=bHPr5WeX4zrP-VaVVHquxysTBlnRog8lfrh2z2ydf1g,137000
62
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Light.ttf,sha256=ks1IgCjNng7ksZNOSKaqBefxvwTGXrgQTySGy0nfIJY,131128
63
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-LightItalic.ttf,sha256=-Xa1RlfcMxM1QYpjMNbNRv-a5ka8m5o5h-3P7gsMoRs,137220
64
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Medium.ttf,sha256=a-MrWOsGFqIGqpQXeaZyxruXqU3hMC2eHpWNa4wq8RE,130976
65
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-MediumItalic.ttf,sha256=vJfOBlOVmx_MXbkgSdxHdzSSeALkd253C4Srr84Qvq8,137068
66
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Regular.ttf,sha256=skg4DCl15zL9ZD4MAL9fOt4WjonKYBUOMj46ItSAe5Q,130848
67
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBold.ttf,sha256=uCiR97jg6sUHtGKVPNtJEg1zZG5Y9ArQ-raqBGjaeGg,130856
68
+ spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBoldItalic.ttf,sha256=a5-0oOIrtJltQRa64uFKCdtcjzPvEJ71f_cYavG2i3E,137132
69
+ spacr/resources/icons/abort.png,sha256=avtIRT7aCJsdZ1WnY_rZStm6cCji5bYPLnlptdcTNcM,6583
70
+ spacr/resources/icons/annotate.png,sha256=GFgh7DiUMwPG_-xE6W1qU8V_qzSwBi1xKenfoaQxeFA,15495
71
+ spacr/resources/icons/cellpose_all.png,sha256=HVWOIOBF8p3-On-2UahwMyQXp7awsoC5yWExU1ahDag,20271
72
+ spacr/resources/icons/cellpose_masks.png,sha256=HVWOIOBF8p3-On-2UahwMyQXp7awsoC5yWExU1ahDag,20271
73
+ spacr/resources/icons/classify.png,sha256=-iv4sqAwUVJO3CG6fHKHf3_BB0s-I2i4prg-iR7dSBM,35897
74
+ spacr/resources/icons/default.png,sha256=KoNhaSHukO4wDyivyYEgSbb5mGj-sAxmhKikLLtNpWs,20341
75
+ spacr/resources/icons/download.png,sha256=1nUoWRaTc4vIsK6gompdeqk0cIv2GdH-gCNHaEBX6Mc,20467
76
+ spacr/resources/icons/logo.pdf,sha256=VB4cS41V3VV_QxD7l6CwdQKQiYLErugLBxWoCoxjQU0,377925
77
+ spacr/resources/icons/logo_spacr.png,sha256=qG3e3bdrAefhl1281rfo0R2XP0qA-c-oaBCXjxMGXkw,42587
78
+ spacr/resources/icons/logo_spacr_1.png,sha256=g9y2ZmnV3hab8r1idDfytm8AaHbBiQdu_93Jd7YKzwA,610892
79
+ spacr/resources/icons/make_masks.png,sha256=iB4kaTgbgyygSJSNstVKhRIXKSgWYkeh7Gt3ox-kWDI,42493
80
+ spacr/resources/icons/map_barcodes.png,sha256=ED6yCopk3hP7tICSvT8U_qA1bOOb0WHqmxVkmRxnbtE,7896
81
+ spacr/resources/icons/mask.png,sha256=DcBes-3UJ7XjRfj_P4RttRp680ZKZeH9a-DSk7bIF5U,37658
82
+ spacr/resources/icons/measure.png,sha256=Gd-dlN-3Z8D_XngJnChNme8D63KEJMFs_cBv7wT2vOY,40938
83
+ spacr/resources/icons/ml_analyze.png,sha256=Wc9a_LpG2XffiMfXxn0yUmGP40IXzlAV7bHXQf7m_2o,15754
84
+ spacr/resources/icons/recruitment.png,sha256=dlVh2ebV_f3rhRFBiL0hDtlUeBSIeg0d4vny8A8IAdo,25067
85
+ spacr/resources/icons/regression.png,sha256=WIrKY4fSojBOCDkHno4Qb-KH7jcHh6G67dOKzczaU1I,42267
86
+ spacr/resources/icons/run.png,sha256=ICzyAvsRBCXNAbdn5N3PxCxxVyqxkfC4zOI5Zc8vbxQ,8974
87
+ spacr/resources/icons/sequencing.png,sha256=P9E_Y76ZysWMKst3_hAw-_4F510XPW1l1TsDElVzt4o,17775
88
+ spacr/resources/icons/settings.png,sha256=y5Ow5BxJDDsrqom0VNbOMDGGUs6odxbSMDy6y4r_F0w,22269
89
+ spacr/resources/icons/spacr_logo_rotation.gif,sha256=bgIx1Hx41Ob90SY-q3PBa3CSxtVRnF9XX-ApUSr0wvY,1502560
90
+ spacr/resources/icons/train_cellpose.png,sha256=_PZ_R_B6azuUACmscScAkugmgLZvCPKQFGIAsszqNLk,3858
91
+ spacr/resources/icons/umap.png,sha256=dOLF3DeLYy9k0nkUybiZMe1wzHQwLJFRmgccppw-8bI,27457
92
+ spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
93
+ spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
94
+ spacr/resources/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
95
+ spacr-0.2.8.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
96
+ spacr-0.2.8.dist-info/METADATA,sha256=6FX9b07eeM3Ogd2aSrRfgA3qKVW3d321cvsSEonD2Yk,5388
97
+ spacr-0.2.8.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
98
+ spacr-0.2.8.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
99
+ spacr-0.2.8.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
100
+ spacr-0.2.8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (72.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,58 +0,0 @@
1
- spacr/__init__.py,sha256=pJ7Mm7Kb1DhHIdLmNgMILFVWJ9QAG47pT0M6wtiXl8E,1465
2
- spacr/__main__.py,sha256=bkAJJD2kjIqOP-u1kLvct9jQQCeUXzlEjdgitwi1Lm8,75
3
- spacr/app_annotate.py,sha256=nEIL7Fle9CDKGo3sucG_03DgjUQt5W1M1IHBIpVBr08,2171
4
- spacr/app_classify.py,sha256=urTP_wlZ58hSyM5a19slYlBxN0PdC-9-ga0hvq8CGWc,165
5
- spacr/app_make_masks.py,sha256=pqDhRpluiHZz-kPX2Zh_KbYe4TsU43qYBa_7f-rsjpw,1694
6
- spacr/app_mask.py,sha256=l-dBY8ftzCMdDe6-pXc2Nh_u-idNL9G7UOARiLJBtds,153
7
- spacr/app_measure.py,sha256=_K7APYIeOKpV6e_LcqabBjvEi7mfq9Fch8175x1x0k8,162
8
- spacr/app_sequencing.py,sha256=DjG26jy4cpddnV8WOOAIiExtOe9MleVMY4MFa5uTo5w,157
9
- spacr/app_umap.py,sha256=ZWAmf_OsIKbYvolYuWPMYhdlVe-n2CADoJulAizMiEo,153
10
- spacr/chris.py,sha256=YlBjSgeZaY8HPy6jkrT_ISAnCMAKVfvCxF0I9eAZLFM,2418
11
- spacr/core.py,sha256=iAH6de2dW0nKVtVeBjdWOhSW_KoHlVDVOoOsHb6vGC0,148884
12
- spacr/deep_spacr.py,sha256=ASBsN4JpHp_3S-91JUsB34IWTjTGPYI7jKV2qZnUR5M,37005
13
- spacr/graph_learning.py,sha256=1tR-ZxvXE3dBz1Saw7BeVFcrsUFu9OlUZeZVifih9eo,13070
14
- spacr/gui.py,sha256=bA1Qy6D9aeL_Qe0Xeql8bRkbbFajAMGTZZR3uBzIW1Q,8495
15
- spacr/gui_core.py,sha256=4II8TscaDHDvRXc4D-azQyAeVGNkqyN6_HaNhkjij4s,35546
16
- spacr/gui_elements.py,sha256=Qo22e4t3Mut_hsHqBGlpyS4ZRThLhu0l_DurBXBgzW8,96354
17
- spacr/gui_utils.py,sha256=ySSDDYmY80h_Wk2Nb1oxbugRU2TWt6N7BwusUl_-wRo,14970
18
- spacr/io.py,sha256=Dehuqn_oGo0gcyezQIw9rUUvO7oOHDWuMkPDSCgyrp8,115521
19
- spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
20
- spacr/measure.py,sha256=W5_yuLnsFSafuZNcKzVsCTJSTfpbNgrGTuxG1OVb0iU,55283
21
- spacr/plot.py,sha256=DYJEoK1kz2ih6ZGvKiA3xTqeIeKQNhuQKwgrscopFxA,69101
22
- spacr/sequencing.py,sha256=fHZRnoMSxmhMdadkei3lUeBdckqFyptWdQyWsDW3aaU,83304
23
- spacr/settings.py,sha256=deX0pNwTqyHojpCTiF060RSK5oPeSEcS_s6UlVc0x3Q,65442
24
- spacr/sim.py,sha256=FveaVgBi3eypO2oVB5Dx-v0CC1Ny7UPfXkJiiRRodAk,71212
25
- spacr/sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- spacr/timelapse.py,sha256=KMYCgHzf9LTZe-lWl5mvH2EjbKRE6OhpwdY13wEumGc,39504
27
- spacr/utils.py,sha256=r23Cd94HT3q1kMIbyEmyvJVnnDOY16plvUXVwxuX1PE,189256
28
- spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
29
- spacr/resources/icons/abort.png,sha256=avtIRT7aCJsdZ1WnY_rZStm6cCji5bYPLnlptdcTNcM,6583
30
- spacr/resources/icons/annotate.png,sha256=GFgh7DiUMwPG_-xE6W1qU8V_qzSwBi1xKenfoaQxeFA,15495
31
- spacr/resources/icons/cellpose_all.png,sha256=HVWOIOBF8p3-On-2UahwMyQXp7awsoC5yWExU1ahDag,20271
32
- spacr/resources/icons/cellpose_masks.png,sha256=HVWOIOBF8p3-On-2UahwMyQXp7awsoC5yWExU1ahDag,20271
33
- spacr/resources/icons/classify.png,sha256=-iv4sqAwUVJO3CG6fHKHf3_BB0s-I2i4prg-iR7dSBM,35897
34
- spacr/resources/icons/default.png,sha256=KoNhaSHukO4wDyivyYEgSbb5mGj-sAxmhKikLLtNpWs,20341
35
- spacr/resources/icons/download.png,sha256=1nUoWRaTc4vIsK6gompdeqk0cIv2GdH-gCNHaEBX6Mc,20467
36
- spacr/resources/icons/logo_spacr.png,sha256=g9y2ZmnV3hab8r1idDfytm8AaHbBiQdu_93Jd7YKzwA,610892
37
- spacr/resources/icons/make_masks.png,sha256=iB4kaTgbgyygSJSNstVKhRIXKSgWYkeh7Gt3ox-kWDI,42493
38
- spacr/resources/icons/map_barcodes.png,sha256=ED6yCopk3hP7tICSvT8U_qA1bOOb0WHqmxVkmRxnbtE,7896
39
- spacr/resources/icons/mask.png,sha256=DcBes-3UJ7XjRfj_P4RttRp680ZKZeH9a-DSk7bIF5U,37658
40
- spacr/resources/icons/measure.png,sha256=Gd-dlN-3Z8D_XngJnChNme8D63KEJMFs_cBv7wT2vOY,40938
41
- spacr/resources/icons/ml_analyze.png,sha256=Wc9a_LpG2XffiMfXxn0yUmGP40IXzlAV7bHXQf7m_2o,15754
42
- spacr/resources/icons/recruitment.png,sha256=dlVh2ebV_f3rhRFBiL0hDtlUeBSIeg0d4vny8A8IAdo,25067
43
- spacr/resources/icons/regression.png,sha256=WIrKY4fSojBOCDkHno4Qb-KH7jcHh6G67dOKzczaU1I,42267
44
- spacr/resources/icons/run.png,sha256=ICzyAvsRBCXNAbdn5N3PxCxxVyqxkfC4zOI5Zc8vbxQ,8974
45
- spacr/resources/icons/sequencing.png,sha256=P9E_Y76ZysWMKst3_hAw-_4F510XPW1l1TsDElVzt4o,17775
46
- spacr/resources/icons/settings.png,sha256=y5Ow5BxJDDsrqom0VNbOMDGGUs6odxbSMDy6y4r_F0w,22269
47
- spacr/resources/icons/spacr_logo_rotation.gif,sha256=bgIx1Hx41Ob90SY-q3PBa3CSxtVRnF9XX-ApUSr0wvY,1502560
48
- spacr/resources/icons/train_cellpose.png,sha256=_PZ_R_B6azuUACmscScAkugmgLZvCPKQFGIAsszqNLk,3858
49
- spacr/resources/icons/umap.png,sha256=dOLF3DeLYy9k0nkUybiZMe1wzHQwLJFRmgccppw-8bI,27457
50
- spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
51
- spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
52
- spacr/resources/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
53
- spacr-0.2.4.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
54
- spacr-0.2.4.dist-info/METADATA,sha256=CK0hbhbcv2TXBF8zRgO8fQRLnWDiEWPn5xmkjtfMSIQ,5049
55
- spacr-0.2.4.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
56
- spacr-0.2.4.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
57
- spacr-0.2.4.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
58
- spacr-0.2.4.dist-info/RECORD,,
File without changes