spacr 0.1.1__py3-none-any.whl → 0.1.7__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.
spacr/utils.py CHANGED
@@ -1,4 +1,4 @@
1
- import sys, os, re, sqlite3, torch, torchvision, random, string, shutil, cv2, tarfile, glob
1
+ import sys, os, re, sqlite3, torch, torchvision, random, string, shutil, cv2, tarfile, glob, psutil, platform, signal
2
2
 
3
3
  import numpy as np
4
4
  from cellpose import models as cp_models
@@ -72,6 +72,64 @@ from sklearn.cluster import KMeans
72
72
  from scipy import stats
73
73
 
74
74
  from .logger import log_function_call
75
+ from multiprocessing import set_start_method, get_start_method
76
+
77
+ import tkinter as tk
78
+ from tkinter import ttk
79
+ import tkinter.font as tkFont
80
+
81
+ def reset_mp():
82
+ current_method = get_start_method()
83
+ system = platform.system()
84
+
85
+ if system == 'Windows':
86
+ if current_method != 'spawn':
87
+ set_start_method('spawn', force=True)
88
+ elif system in ('Linux', 'Darwin'): # Darwin is macOS
89
+ if current_method != 'fork':
90
+ set_start_method('fork', force=True)
91
+
92
+ def is_multiprocessing_process(process):
93
+ """ Check if the process is a multiprocessing process. """
94
+ try:
95
+ for cmd in process.cmdline():
96
+ if 'multiprocessing' in cmd:
97
+ return True
98
+ except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
99
+ pass
100
+ return False
101
+
102
+ def close_file_descriptors():
103
+ """ Close file descriptors and shared memory objects. """
104
+ import resource
105
+
106
+ soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
107
+ for fd in range(3, soft):
108
+ try:
109
+ os.close(fd)
110
+ except OSError:
111
+ pass
112
+
113
+ def close_multiprocessing_processes():
114
+ """ Close all multiprocessing processes. """
115
+ current_pid = os.getpid()
116
+ for proc in psutil.process_iter(['pid', 'cmdline']):
117
+ try:
118
+ # Skip the current process
119
+ if proc.info['pid'] == current_pid:
120
+ continue
121
+
122
+ # Check if the process is a multiprocessing process
123
+ if is_multiprocessing_process(proc):
124
+ proc.terminate()
125
+ proc.wait(timeout=5) # Wait up to 5 seconds for the process to terminate
126
+ print(f"Terminated process {proc.info['pid']}")
127
+
128
+ except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess) as e:
129
+ print(f"Failed to terminate process {proc.info['pid']}: {e}")
130
+
131
+ # Close file descriptors
132
+ close_file_descriptors()
75
133
 
76
134
  def check_mask_folder(src,mask_fldr):
77
135
 
@@ -92,19 +150,14 @@ def check_mask_folder(src,mask_fldr):
92
150
 
93
151
  def smooth_hull_lines(cluster_data):
94
152
  hull = ConvexHull(cluster_data)
95
-
96
153
  # Extract vertices of the hull
97
154
  vertices = hull.points[hull.vertices]
98
-
99
155
  # Close the loop
100
156
  vertices = np.vstack([vertices, vertices[0, :]])
101
-
102
157
  # Parameterize the vertices
103
158
  tck, u = splprep(vertices.T, u=None, s=0.0)
104
-
105
159
  # Evaluate spline at new parameter values
106
160
  new_points = splev(np.linspace(0, 1, 100), tck)
107
-
108
161
  return new_points[0], new_points[1]
109
162
 
110
163
  def _gen_rgb_image(image, channels):
@@ -419,7 +472,7 @@ def is_list_of_lists(var):
419
472
  return True
420
473
  return False
421
474
 
422
- def normalize_to_dtype(array, p1=2, p2=98, percentile_list=None):
475
+ def normalize_to_dtype(array, p1=2, p2=98, percentile_list=None, new_dtype=None):
423
476
  """
424
477
  Normalize each image in the stack to its own percentiles.
425
478
 
@@ -438,7 +491,16 @@ def normalize_to_dtype(array, p1=2, p2=98, percentile_list=None):
438
491
  The normalized stack with the same shape as the input stack.
439
492
  """
440
493
 
441
- out_range = (0, np.iinfo(array.dtype).max)
494
+ if new_dtype is None:
495
+ out_range = (0, np.iinfo(array.dtype).max)
496
+ elif new_dtype in [np.uint8, np.uint16]:
497
+ out_range = (0, np.iinfo(new_dtype).max)
498
+ elif new_dtype in ['uint8', 'uint16']:
499
+ new_dtype = np.uint8 if new_dtype == 'uint8' else np.uint16
500
+ out_range = (0, np.iinfo(new_dtype).max)
501
+ else:
502
+ out_range = (0, np.iinfo(array.dtype).max)
503
+
442
504
  nimg = array.shape[2]
443
505
  new_stack = np.empty_like(array, dtype=array.dtype)
444
506
 
@@ -3997,7 +4059,7 @@ def _merge_cells_based_on_parasite_overlap(parasite_mask, cell_mask, nuclei_mask
3997
4059
 
3998
4060
  # Relabel the merged cell mask
3999
4061
  relabeled_cell_mask, _ = label(cell_mask, return_num=True)
4000
- return relabeled_cell_mask
4062
+ return relabeled_cell_mask.astype(np.uint16)
4001
4063
 
4002
4064
  def adjust_cell_masks(parasite_folder, cell_folder, nuclei_folder, overlap_threshold=5, perimeter_threshold=30):
4003
4065
 
@@ -4037,7 +4099,7 @@ def adjust_cell_masks(parasite_folder, cell_folder, nuclei_folder, overlap_thres
4037
4099
  merged_cell_mask = _merge_cells_based_on_parasite_overlap(parasite_mask, cell_mask, nuclei_mask, overlap_threshold, perimeter_threshold)
4038
4100
 
4039
4101
  # Force 16 bit
4040
- mamerged_cell_masksk = merged_cell_mask.astype(np.uint16)
4102
+ #merged_cell_mask = merged_cell_mask.astype(np.uint16)
4041
4103
 
4042
4104
  # Overwrite the original cell mask file with the merged result
4043
4105
  np.save(cell_path, merged_cell_mask)
@@ -4329,4 +4391,4 @@ def correct_masks(src):
4329
4391
 
4330
4392
  cell_path = os.path.join(src,'norm_channel_stack', 'cell_mask_stack')
4331
4393
  convert_and_relabel_masks(cell_path)
4332
- _load_and_concatenate_arrays(src, [0,1,2,3], 1, 0, 2)
4394
+ _load_and_concatenate_arrays(src, [0,1,2,3], 1, 0, 2)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spacr
3
- Version: 0.1.1
3
+ Version: 0.1.7
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,7 +9,6 @@ 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: dgl ==0.9.1
13
12
  Requires-Dist: torch <3.0,>=2.2.1
14
13
  Requires-Dist: torchvision <1.0,>=0.17.1
15
14
  Requires-Dist: torch-geometric <3.0,>=2.5.1
@@ -40,8 +39,9 @@ Requires-Dist: ttf-opensans >=2020.10.30
40
39
  Requires-Dist: customtkinter <6.0,>=5.2.2
41
40
  Requires-Dist: biopython <2.0,>=1.80
42
41
  Requires-Dist: lxml <6.0,>=5.1.0
42
+ Requires-Dist: huggingface-hub <0.25,>=0.24.0
43
43
  Provides-Extra: dev
44
- Requires-Dist: pytest >=3.9 ; extra == 'dev'
44
+ Requires-Dist: pytest <3.11,>=3.9 ; extra == 'dev'
45
45
  Provides-Extra: full
46
46
  Requires-Dist: opencv-python ; extra == 'full'
47
47
  Provides-Extra: headless
@@ -63,7 +63,7 @@ Requires-Dist: opencv-python-headless ; extra == 'headless'
63
63
  SpaCr
64
64
  =====
65
65
 
66
- Spatial phenotype analysis of CRISPR-Cas9 screens (SpaCr). The spatial organization of organelles and proteins within cells constitutes a key level of functional regulation. In the context of infectious disease, the spatial relationships between host cell structures and intracellular pathogens are critical to understand host clearance mechanisms and how pathogens evade them. SpaCr is a Python-based software package for generating single-cell image data for deep-learning sub-cellular/cellular phenotypic classification from pooled genetic CRISPR-Cas9 screens. SpaCr provides a flexible toolset to extract single-cell images and measurements from high-content cell painting experiments, train deep-learning models to classify cellular/subcellular phenotypes, simulate, and analyze pooled CRISPR-Cas9 imaging screens.
66
+ Spatial phenotype analysis of CRISPR-Cas9 screens (SpaCr). The spatial organization of organelles and proteins within cells constitutes a key level of functional regulation. In the context of infectious disease, the spatial relationships between host cell structures and intracellular pathogens are critical to understanding host clearance mechanisms and how pathogens evade them. SpaCr is a Python-based software package for generating single-cell image data for deep-learning sub-cellular/cellular phenotypic classification from pooled genetic CRISPR-Cas9 screens. SpaCr provides a flexible toolset to extract single-cell images and measurements from high-content cell painting experiments, train deep-learning models to classify cellular/subcellular phenotypes, simulate, and analyze pooled CRISPR-Cas9 imaging screens.
67
67
 
68
68
  Features
69
69
  --------
@@ -72,9 +72,9 @@ Features
72
72
 
73
73
  - **Object Measurements:** Measurements for each object including scikit-image-regionprops, intensity percentiles, shannon-entropy, pearsons and manders correlations, homogeneity, and radial distribution. Measurements are saved to a SQL database in object-level tables.
74
74
 
75
- - **Crop Images:** Objects (e.g., cells) can be saved as PNGs from the object area or bounding box area of each object. Object paths are saved in a SQL database that can be annotated and used to train CNNs/Transformer models for classification tasks.
75
+ - **Crop Images:** Save objects (cells, nuclei, pathogen, cytoplasm) as images. Object image paths are saved in a SQL database.
76
76
 
77
- - **Train CNNs or Transformers:** Train Torch Convolutional Neural Networks (CNNs) or Transformers to classify single object images. Train Torch models with IRM/ERM, checkpointing.
77
+ - **Train CNNs or Transformers:** Train Torch models to classify single object images.
78
78
 
79
79
  - **Manual Annotation:** Supports manual annotation of single-cell images and segmentation to refine training datasets for training CNNs/Transformers or cellpose, respectively.
80
80
 
@@ -91,29 +91,20 @@ Features
91
91
  Installation
92
92
  ------------
93
93
 
94
- Requires Tkinter for graphical user interface features.
94
+ If using Windows, switch to Linux—it's free, open-source, and better.
95
95
 
96
- Ubuntu
97
- ~~~~~~
96
+ Before installing SpaCr on OSX ensure OpenMP is installed::
98
97
 
99
- Before installing SpaCr, ensure Tkinter is installed:
98
+ brew install libomp
100
99
 
101
- (Tkinter is included with the standard Python installation on macOS, and Windows)
102
-
103
- On Linux:
104
-
105
- ::
100
+ SpaCr GUI requires Tkinter. On Linux, ensure Tkinter is installed. (Tkinter is included with the standard Python installation on macOS and Windows)::
106
101
 
107
102
  sudo apt-get install python3-tk
108
103
 
109
- Install spacr with pip
110
-
111
- ::
104
+ Install SpaCr with pip::
112
105
 
113
106
  pip install spacr
114
107
 
115
- Run spacr GUI:
116
-
117
- ::
108
+ Run SpaCr GUI::
118
109
 
119
- gui
110
+ spacr
@@ -0,0 +1,60 @@
1
+ spacr/__init__.py,sha256=8uhfJ_RcnX4OmvflNRcts4zxnyfML6xiyIeFGZeMpXg,1416
2
+ spacr/__main__.py,sha256=bkAJJD2kjIqOP-u1kLvct9jQQCeUXzlEjdgitwi1Lm8,75
3
+ spacr/alpha.py,sha256=Y95sLEfpK2OSYKRn3M8eUOU33JJeXfV8zhrC4KnwSTY,35244
4
+ spacr/annotate_app.py,sha256=imQ7ZEXDyM6ce1dxZ1xUS1-KequuF_NCI4xCaPLjvco,29275
5
+ spacr/annotate_app_v2.py,sha256=imQ7ZEXDyM6ce1dxZ1xUS1-KequuF_NCI4xCaPLjvco,29275
6
+ spacr/app_annotate.py,sha256=iBAD_qo5_3cQGAmQbtVYXuJd2n8cBH_bfCtqmWcB67s,23610
7
+ spacr/app_classify.py,sha256=urTP_wlZ58hSyM5a19slYlBxN0PdC-9-ga0hvq8CGWc,165
8
+ spacr/app_make_masks.py,sha256=0N8Wfby3HaVX4m9tOyBy7OQolamYG9lVwmnlzkK4uaE,44993
9
+ spacr/app_make_masks_v2.py,sha256=OkNeskNbgep8wQa4ES3jpJjZLfn4yIkGwQOd9r0spfA,30497
10
+ spacr/app_mask.py,sha256=l-dBY8ftzCMdDe6-pXc2Nh_u-idNL9G7UOARiLJBtds,153
11
+ spacr/app_measure.py,sha256=_K7APYIeOKpV6e_LcqabBjvEi7mfq9Fch8175x1x0k8,162
12
+ spacr/app_sequencing.py,sha256=DjG26jy4cpddnV8WOOAIiExtOe9MleVMY4MFa5uTo5w,157
13
+ spacr/app_umap.py,sha256=ZWAmf_OsIKbYvolYuWPMYhdlVe-n2CADoJulAizMiEo,153
14
+ spacr/chris.py,sha256=YlBjSgeZaY8HPy6jkrT_ISAnCMAKVfvCxF0I9eAZLFM,2418
15
+ spacr/classify_app.py,sha256=Zi15ryc1ocYitRF4kyxlC27XxGyzfSPdvj2d6ZrSh7E,8446
16
+ spacr/cli.py,sha256=507jfOOEV8BoL4eeUcblvH-iiDHdBrEVJLu1ghAAPSc,1800
17
+ spacr/core.py,sha256=jNlDk-0vb0fpteNT3bsNpfLRLAuwsx7SPlcajT1eCuw,160139
18
+ spacr/deep_spacr.py,sha256=bIa_txVJBy9zrKyqX0tpNQw0nNCUo77pSSUJiYy1egE,36994
19
+ spacr/foldseek.py,sha256=YIP1d4Ci6CeA9jSyiv-HTDbNmAmcSM9Y_DaOs7wYzLY,33546
20
+ spacr/get_alfafold_structures.py,sha256=ehx_MQgb12k3hFecP6cYVlm5TLO8iWjgevy8ESyS3cw,3544
21
+ spacr/graph_learning.py,sha256=1tR-ZxvXE3dBz1Saw7BeVFcrsUFu9OlUZeZVifih9eo,13070
22
+ spacr/gui.py,sha256=kvQ0X9nyZz_BWsOyJSNSv7gEG1ZuTqjz4EH78e0uul4,7783
23
+ spacr/gui_2.py,sha256=ZAI5quQYbhQJ40vK0NCqU_UMSPLkpfeQpomBWUSM0fc,6946
24
+ spacr/gui_annotate.py,sha256=ugBksLGOHdtOLlEuRyyc59TrkYKu3rDf8JxEgiBSVao,6536
25
+ spacr/gui_classify_app.py,sha256=Zi15ryc1ocYitRF4kyxlC27XxGyzfSPdvj2d6ZrSh7E,8446
26
+ spacr/gui_core.py,sha256=qycN0XSe4PcdvvXSagss66SY51RzxT-trv1Z-7mBoig,28452
27
+ spacr/gui_elements.py,sha256=u3T6Ssx6HC_S4NDaNlDeEGNWaheFoGDRnL8Uyn0hvJ4,15203
28
+ spacr/gui_make_masks_app.py,sha256=tl4M4Q2WQgrrwjRBJVevxJxpNowqzPhWkdCOm2UfRbw,45053
29
+ spacr/gui_make_masks_app_v2.py,sha256=X3izTBXdCZDlkVe-fbG-jmCQtcAbmK0OIivjyWaLhug,30576
30
+ spacr/gui_mask_app.py,sha256=mhTl_XzXLFl8Tx3WYEMpdYB_qw9u5JJa0EdkvlcIzAE,10706
31
+ spacr/gui_measure_app.py,sha256=_C1-XFL5HSquUEEbM_NcxdvHx-socPFCx85MBG4d6xo,10598
32
+ spacr/gui_run.py,sha256=0x85MJqFtREuWuNeIRLB8hFeibKGszfN14POQQWzPDQ,1998
33
+ spacr/gui_sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
+ spacr/gui_utils.py,sha256=tl19y0EXFNT73I_AnDFafe7UQga9FL7EQ46o_XCFHFI,5821
35
+ spacr/gui_wrappers.py,sha256=-E1SFOmtp7_nfg9QzajI7GJcAcaMug92Pjw7pS1YzjY,4656
36
+ spacr/io.py,sha256=IoERqSwoxJrInYl-E0WfwFOEDZXFdJofk5DmpbyLGWM,112077
37
+ spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
38
+ spacr/make_masks_app.py,sha256=iGaTwhowoe2JMOSOf8bJwQZTooRhLQx7KO0ewnAmqDY,45138
39
+ spacr/make_masks_app_v2.py,sha256=X3izTBXdCZDlkVe-fbG-jmCQtcAbmK0OIivjyWaLhug,30576
40
+ spacr/mask_app.py,sha256=mhTl_XzXLFl8Tx3WYEMpdYB_qw9u5JJa0EdkvlcIzAE,10706
41
+ spacr/measure.py,sha256=CL8bI3ujtQxsRuQJUVSXmThQFPzQvTEDK38DSELpSQo,55746
42
+ spacr/measure_app.py,sha256=_C1-XFL5HSquUEEbM_NcxdvHx-socPFCx85MBG4d6xo,10598
43
+ spacr/old_code.py,sha256=jw67DAGoLBd7mWofVzRJSEmCI1Qrff26zIo65SEkV00,13817
44
+ spacr/plot.py,sha256=DYJEoK1kz2ih6ZGvKiA3xTqeIeKQNhuQKwgrscopFxA,69101
45
+ spacr/sequencing.py,sha256=fHZRnoMSxmhMdadkei3lUeBdckqFyptWdQyWsDW3aaU,83304
46
+ spacr/settings.py,sha256=WVM24OZconm3toadtjvBPZjFMn1m4SzHlXQsC52HfUU,47464
47
+ spacr/sim.py,sha256=FveaVgBi3eypO2oVB5Dx-v0CC1Ny7UPfXkJiiRRodAk,71212
48
+ spacr/sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ spacr/timelapse.py,sha256=KMYCgHzf9LTZe-lWl5mvH2EjbKRE6OhpwdY13wEumGc,39504
50
+ spacr/utils.py,sha256=149Bbha9OXAKyDwABgHz5h4O7Gqy6aeFLA1pMSq311s,186966
51
+ spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
52
+ spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
53
+ spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
54
+ spacr/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
55
+ spacr-0.1.7.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
56
+ spacr-0.1.7.dist-info/METADATA,sha256=XEIxRB33Cob2TjCbNvNhJCBiNacpow3AkEl-Wj02wM4,5049
57
+ spacr-0.1.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
58
+ spacr-0.1.7.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
59
+ spacr-0.1.7.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
60
+ spacr-0.1.7.dist-info/RECORD,,
@@ -0,0 +1,8 @@
1
+ [console_scripts]
2
+ annotate = spacr.app_annotate:gui_annotate
3
+ classify = spacr.app_classify:start_classify_app
4
+ make_masks = spacr.app_make_masks:gui_make_masks
5
+ mask = spacr.app_mask:start_mask_app
6
+ measure = spacr.app_measure:start_measure_app
7
+ sim = spacr.app_sim:gui_sim
8
+ spacr = spacr.gui:gui_app
@@ -1,40 +0,0 @@
1
- spacr/__init__.py,sha256=rnb_oYH6HmC1KvJmc7ymrdtHvmMW5t7bn8tJa03cxcA,1286
2
- spacr/__main__.py,sha256=bkAJJD2kjIqOP-u1kLvct9jQQCeUXzlEjdgitwi1Lm8,75
3
- spacr/alpha.py,sha256=Y95sLEfpK2OSYKRn3M8eUOU33JJeXfV8zhrC4KnwSTY,35244
4
- spacr/annotate_app.py,sha256=2X_xnXFN_w19RG99awsTPLzQfQZyQdwbaT-lcRxyV-w,20670
5
- spacr/annotate_app_v2.py,sha256=kvikj_QbN4EHdyYwB0kjEepEuq2uVwfAF-VJ531qO3Q,22647
6
- spacr/chris.py,sha256=YlBjSgeZaY8HPy6jkrT_ISAnCMAKVfvCxF0I9eAZLFM,2418
7
- spacr/cli.py,sha256=507jfOOEV8BoL4eeUcblvH-iiDHdBrEVJLu1ghAAPSc,1800
8
- spacr/core.py,sha256=m9fsk-qDPow4AzOYpTIsd4jT7PF_L_4y5xillR5eRdk,160253
9
- spacr/deep_spacr.py,sha256=N0o7ILD2p1FTfU4DFxnpjs00xjLhwib-ev0XGqA6muU,37035
10
- spacr/foldseek.py,sha256=YIP1d4Ci6CeA9jSyiv-HTDbNmAmcSM9Y_DaOs7wYzLY,33546
11
- spacr/get_alfafold_structures.py,sha256=ehx_MQgb12k3hFecP6cYVlm5TLO8iWjgevy8ESyS3cw,3544
12
- spacr/graph_learning.py,sha256=1tR-ZxvXE3dBz1Saw7BeVFcrsUFu9OlUZeZVifih9eo,13070
13
- spacr/gui.py,sha256=ugBksLGOHdtOLlEuRyyc59TrkYKu3rDf8JxEgiBSVao,6536
14
- spacr/gui_2.py,sha256=ZAI5quQYbhQJ40vK0NCqU_UMSPLkpfeQpomBWUSM0fc,6946
15
- spacr/gui_classify_app.py,sha256=W_epjHsM3P9JfYDWFre694r9suXR_oEtBLvs6WAE_po,7860
16
- spacr/gui_mask_app.py,sha256=Lmz1_PLUSuYYLWp36xnYSkKXqEn2bgaHIpW0uOeq4gQ,10403
17
- spacr/gui_measure_app.py,sha256=kB-BL0_6vGo5MWND7e2OdLTz4MPa77K9tPYu3eDwBnk,10079
18
- spacr/gui_sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- spacr/gui_utils.py,sha256=FFFpDzlNyolv1iQtawwD_acctvUpMsFsbVMCrdwyuCM,53167
20
- spacr/io.py,sha256=IoERqSwoxJrInYl-E0WfwFOEDZXFdJofk5DmpbyLGWM,112077
21
- spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
22
- spacr/mask_app.py,sha256=jlKmj_evveIkkyH3PYEcAshcLXN0DOPWB1oc4hAwq9E,44201
23
- spacr/measure.py,sha256=0FRsHF5ftar4JZ0B_6Nq-NlyP5t6aiO0IrskyikIBEE,55000
24
- spacr/old_code.py,sha256=jw67DAGoLBd7mWofVzRJSEmCI1Qrff26zIo65SEkV00,13817
25
- spacr/plot.py,sha256=lrwU51OTWfby1wx73XGyjYmTjLVia7WOmGH5LZZ-4jM,67145
26
- spacr/sequencing.py,sha256=U_TBJGNfOBfokGegUe950W_KPfm51VOgpfibXoZ8RMQ,83974
27
- spacr/settings.py,sha256=Tr2fo2I75FGfmEVQOONOpGwqXMzFCrYMz4NAxav3ckg,21183
28
- spacr/sim.py,sha256=FveaVgBi3eypO2oVB5Dx-v0CC1Ny7UPfXkJiiRRodAk,71212
29
- spacr/timelapse.py,sha256=KMYCgHzf9LTZe-lWl5mvH2EjbKRE6OhpwdY13wEumGc,39504
30
- spacr/utils.py,sha256=O7dpCF3bU95d2v0UuPFeJtzXYrkh0r-6aLxaqkKkFwY,184619
31
- spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
32
- spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
33
- spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
34
- spacr/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
35
- spacr-0.1.1.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
36
- spacr-0.1.1.dist-info/METADATA,sha256=f4CaWxwjyeC2yAEeYl-3J50QgVGZqTY9dBX9r66LyTM,5157
37
- spacr-0.1.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
38
- spacr-0.1.1.dist-info/entry_points.txt,sha256=xncHsqD9MI5wj0_p4mgZlrB8dHm_g_qF0Ggo1c78LqY,315
39
- spacr-0.1.1.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
40
- spacr-0.1.1.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- [console_scripts]
2
- annotate = spacr.annotate_app:gui_annotation
3
- classify = spacr.gui_classify_app:gui_classify
4
- gui = spacr.gui:gui_app
5
- gui2 = spacr.gui_2:gui_app
6
- make_masks = spacr.mask_app:gui_make_masks
7
- mask = spacr.gui_mask_app:gui_mask
8
- measure = spacr.gui_measure_app:gui_measure
9
- sim = spacr.gui_sim_app:gui_sim
File without changes
File without changes