spacr 0.1.12__py3-none-any.whl → 0.1.50__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/app_annotate.py +2 -3
- spacr/app_classify.py +5 -198
- spacr/app_make_masks.py +1 -2
- spacr/app_make_masks_v2.py +2 -4
- spacr/app_mask.py +5 -248
- spacr/app_measure.py +5 -245
- spacr/deep_spacr.py +3 -1
- spacr/gui.py +26 -16
- spacr/gui_utils.py +1008 -668
- spacr/measure.py +24 -3
- spacr/settings.py +13 -2
- spacr/utils.py +59 -5
- {spacr-0.1.12.dist-info → spacr-0.1.50.dist-info}/METADATA +13 -26
- {spacr-0.1.12.dist-info → spacr-0.1.50.dist-info}/RECORD +18 -18
- spacr-0.1.50.dist-info/entry_points.txt +8 -0
- spacr-0.1.12.dist-info/entry_points.txt +0 -9
- {spacr-0.1.12.dist-info → spacr-0.1.50.dist-info}/LICENSE +0 -0
- {spacr-0.1.12.dist-info → spacr-0.1.50.dist-info}/WHEEL +0 -0
- {spacr-0.1.12.dist-info → spacr-0.1.50.dist-info}/top_level.txt +0 -0
spacr/measure.py
CHANGED
@@ -617,6 +617,13 @@ def _measure_crop_core(index, time_ls, file, settings):
|
|
617
617
|
start = time.time()
|
618
618
|
try:
|
619
619
|
source_folder = os.path.dirname(settings['input_folder'])
|
620
|
+
#if not os.path.basename(source_folder).endswith('merged'):
|
621
|
+
# source_folder = os.path.join(source_folder, 'merged')
|
622
|
+
# print(f'changed source_folder to {source_folder}')
|
623
|
+
|
624
|
+
#if not os.path.exists(source_folder):
|
625
|
+
# return
|
626
|
+
|
620
627
|
file_name = os.path.splitext(file)[0]
|
621
628
|
data = np.load(os.path.join(settings['input_folder'], file))
|
622
629
|
|
@@ -750,6 +757,15 @@ def _measure_crop_core(index, time_ls, file, settings):
|
|
750
757
|
if isinstance(settings['crop_mode'], list):
|
751
758
|
crop_ls = settings['crop_mode']
|
752
759
|
size_ls = settings['png_size']
|
760
|
+
|
761
|
+
if isinstance(size_ls[0], int):
|
762
|
+
size_ls = [size_ls]
|
763
|
+
if len(crop_ls) > 1 and len(size_ls) == 1:
|
764
|
+
size_ls = size_ls * len(crop_ls)
|
765
|
+
|
766
|
+
if len(crop_ls) != len(size_ls):
|
767
|
+
print(f"Setting: size_ls: {settings['png_size']} should be a list of integers, or a list of lists of integers if crop_ls: {settings['crop_mode']} has multiple elements")
|
768
|
+
|
753
769
|
for crop_idx, crop_mode in enumerate(crop_ls):
|
754
770
|
width, height = size_ls[crop_idx]
|
755
771
|
if crop_mode == 'cell':
|
@@ -926,9 +942,14 @@ def measure_crop(settings):
|
|
926
942
|
settings = get_measure_crop_settings(settings)
|
927
943
|
settings = measure_test_mode(settings)
|
928
944
|
|
929
|
-
|
930
|
-
|
931
|
-
|
945
|
+
#src_fldr = settings['input_folder']
|
946
|
+
#if not os.path.basename(src_fldr).endswith('merged'):
|
947
|
+
# settings['input_folder'] = os.path.join(src_fldr, 'merged')
|
948
|
+
# print(f"changed input_folder to {src_fldr}")
|
949
|
+
|
950
|
+
#if not os.path.exists(settings['input_folder']):
|
951
|
+
# print(f'input_folder: {settings["input_folder"]} does not exist')
|
952
|
+
# return
|
932
953
|
|
933
954
|
if settings['cell_mask_dim'] is None:
|
934
955
|
settings['include_uninfected'] = True
|
spacr/settings.py
CHANGED
@@ -27,7 +27,13 @@ def set_default_plot_merge_settings():
|
|
27
27
|
|
28
28
|
def set_default_settings_preprocess_generate_masks(src, settings={}):
|
29
29
|
# Main settings
|
30
|
-
|
30
|
+
if src != None:
|
31
|
+
settings['src'] = src
|
32
|
+
else:
|
33
|
+
settings.setdefault('src', 'path')
|
34
|
+
if 'src' not in settings:
|
35
|
+
settings['src'] = 'path'
|
36
|
+
|
31
37
|
settings.setdefault('preprocess', True)
|
32
38
|
settings.setdefault('masks', True)
|
33
39
|
settings.setdefault('save', True)
|
@@ -212,9 +218,12 @@ def get_umap_image_settings(settings={}):
|
|
212
218
|
|
213
219
|
def get_measure_crop_settings(settings):
|
214
220
|
|
221
|
+
settings.setdefault('src', 'path')
|
222
|
+
|
215
223
|
# Test mode
|
216
224
|
settings.setdefault('test_mode', False)
|
217
225
|
settings.setdefault('test_nr', 10)
|
226
|
+
settings.setdefault('channels', [0,1,2,3])
|
218
227
|
|
219
228
|
#measurement settings
|
220
229
|
settings.setdefault('save_measurements',True)
|
@@ -260,7 +269,7 @@ def get_measure_crop_settings(settings):
|
|
260
269
|
|
261
270
|
# Miscellaneous settings
|
262
271
|
settings.setdefault('experiment', 'exp')
|
263
|
-
settings.setdefault('cells', 'HeLa')
|
272
|
+
settings.setdefault('cells', ['HeLa'])
|
264
273
|
settings.setdefault('cell_loc', None)
|
265
274
|
settings.setdefault('pathogens', ['ME49Dku80WT', 'ME49Dku80dgra8:GRA8', 'ME49Dku80dgra8', 'ME49Dku80TKO'])
|
266
275
|
settings.setdefault('pathogen_loc', [['c1', 'c2', 'c3', 'c4', 'c5', 'c6'], ['c7', 'c8', 'c9', 'c10', 'c11', 'c12'], ['c13', 'c14', 'c15', 'c16', 'c17', 'c18'], ['c19', 'c20', 'c21', 'c22', 'c23', 'c24']])
|
@@ -304,6 +313,8 @@ def set_default_analyze_screen(settings):
|
|
304
313
|
|
305
314
|
def set_default_train_test_model(settings):
|
306
315
|
cores = os.cpu_count()-2
|
316
|
+
|
317
|
+
settings.setdefault('src','path')
|
307
318
|
settings.setdefault('train',True)
|
308
319
|
settings.setdefault('test',False)
|
309
320
|
settings.setdefault('classes',['nc','pc'])
|
spacr/utils.py
CHANGED
@@ -73,6 +73,65 @@ from scipy import stats
|
|
73
73
|
|
74
74
|
from .logger import log_function_call
|
75
75
|
|
76
|
+
import os
|
77
|
+
import signal
|
78
|
+
import psutil
|
79
|
+
import platform
|
80
|
+
from multiprocessing import set_start_method, get_start_method
|
81
|
+
|
82
|
+
def reset_mp():
|
83
|
+
current_method = get_start_method()
|
84
|
+
system = platform.system()
|
85
|
+
|
86
|
+
if system == 'Windows':
|
87
|
+
if current_method != 'spawn':
|
88
|
+
set_start_method('spawn', force=True)
|
89
|
+
elif system in ('Linux', 'Darwin'): # Darwin is macOS
|
90
|
+
if current_method != 'fork':
|
91
|
+
set_start_method('fork', force=True)
|
92
|
+
|
93
|
+
def is_multiprocessing_process(process):
|
94
|
+
""" Check if the process is a multiprocessing process. """
|
95
|
+
try:
|
96
|
+
for cmd in process.cmdline():
|
97
|
+
if 'multiprocessing' in cmd:
|
98
|
+
return True
|
99
|
+
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
|
100
|
+
pass
|
101
|
+
return False
|
102
|
+
|
103
|
+
def close_file_descriptors():
|
104
|
+
""" Close file descriptors and shared memory objects. """
|
105
|
+
import resource
|
106
|
+
|
107
|
+
soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
|
108
|
+
for fd in range(3, soft):
|
109
|
+
try:
|
110
|
+
os.close(fd)
|
111
|
+
except OSError:
|
112
|
+
pass
|
113
|
+
|
114
|
+
def close_multiprocessing_processes():
|
115
|
+
""" Close all multiprocessing processes. """
|
116
|
+
current_pid = os.getpid()
|
117
|
+
for proc in psutil.process_iter(['pid', 'cmdline']):
|
118
|
+
try:
|
119
|
+
# Skip the current process
|
120
|
+
if proc.info['pid'] == current_pid:
|
121
|
+
continue
|
122
|
+
|
123
|
+
# Check if the process is a multiprocessing process
|
124
|
+
if is_multiprocessing_process(proc):
|
125
|
+
proc.terminate()
|
126
|
+
proc.wait(timeout=5) # Wait up to 5 seconds for the process to terminate
|
127
|
+
print(f"Terminated process {proc.info['pid']}")
|
128
|
+
|
129
|
+
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess) as e:
|
130
|
+
print(f"Failed to terminate process {proc.info['pid']}: {e}")
|
131
|
+
|
132
|
+
# Close file descriptors
|
133
|
+
close_file_descriptors()
|
134
|
+
|
76
135
|
def check_mask_folder(src,mask_fldr):
|
77
136
|
|
78
137
|
mask_folder = os.path.join(src,'norm_channel_stack',mask_fldr)
|
@@ -92,19 +151,14 @@ def check_mask_folder(src,mask_fldr):
|
|
92
151
|
|
93
152
|
def smooth_hull_lines(cluster_data):
|
94
153
|
hull = ConvexHull(cluster_data)
|
95
|
-
|
96
154
|
# Extract vertices of the hull
|
97
155
|
vertices = hull.points[hull.vertices]
|
98
|
-
|
99
156
|
# Close the loop
|
100
157
|
vertices = np.vstack([vertices, vertices[0, :]])
|
101
|
-
|
102
158
|
# Parameterize the vertices
|
103
159
|
tck, u = splprep(vertices.T, u=None, s=0.0)
|
104
|
-
|
105
160
|
# Evaluate spline at new parameter values
|
106
161
|
new_points = splev(np.linspace(0, 1, 100), tck)
|
107
|
-
|
108
162
|
return new_points[0], new_points[1]
|
109
163
|
|
110
164
|
def _gen_rgb_image(image, channels):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: spacr
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.50
|
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,12 +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
|
43
|
-
Requires-Dist:
|
44
|
-
Requires-Dist: superqt <0.7,>=0.6.7
|
45
|
-
Requires-Dist: pyqt6 <6.8,>=6.7.1
|
46
|
-
Requires-Dist: pyqtgraph <0.14,>=0.13.7
|
42
|
+
Requires-Dist: huggingface-hub <0.25,>=0.24.0
|
47
43
|
Provides-Extra: dev
|
48
|
-
Requires-Dist: pytest
|
44
|
+
Requires-Dist: pytest <3.11,>=3.9 ; extra == 'dev'
|
49
45
|
Provides-Extra: full
|
50
46
|
Requires-Dist: opencv-python ; extra == 'full'
|
51
47
|
Provides-Extra: headless
|
@@ -67,7 +63,7 @@ Requires-Dist: opencv-python-headless ; extra == 'headless'
|
|
67
63
|
SpaCr
|
68
64
|
=====
|
69
65
|
|
70
|
-
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
|
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.
|
71
67
|
|
72
68
|
Features
|
73
69
|
--------
|
@@ -76,9 +72,9 @@ Features
|
|
76
72
|
|
77
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.
|
78
74
|
|
79
|
-
- **Crop Images:**
|
75
|
+
- **Crop Images:** Save objects (cells, nuclei, pathogen, cytoplasm) as images. Object image paths are saved in a SQL database.
|
80
76
|
|
81
|
-
- **Train CNNs or Transformers:** Train Torch
|
77
|
+
- **Train CNNs or Transformers:** Train Torch models to classify single object images.
|
82
78
|
|
83
79
|
- **Manual Annotation:** Supports manual annotation of single-cell images and segmentation to refine training datasets for training CNNs/Transformers or cellpose, respectively.
|
84
80
|
|
@@ -95,29 +91,20 @@ Features
|
|
95
91
|
Installation
|
96
92
|
------------
|
97
93
|
|
98
|
-
|
94
|
+
If using Windows, switch to Linux—it's free, open-source, and better.
|
99
95
|
|
100
|
-
|
101
|
-
~~~~~~
|
96
|
+
Before installing SpaCr on OSX ensure OpenMP is installed::
|
102
97
|
|
103
|
-
|
98
|
+
brew install libomp
|
104
99
|
|
105
|
-
(Tkinter is included with the standard Python installation on macOS
|
106
|
-
|
107
|
-
On Linux:
|
108
|
-
|
109
|
-
::
|
100
|
+
SpaCr GUI requires Tkinter. On Linux, ensure Tkinter is installed. (Tkinter is included with the standard Python installation on macOS and Windows)::
|
110
101
|
|
111
102
|
sudo apt-get install python3-tk
|
112
103
|
|
113
|
-
Install
|
114
|
-
|
115
|
-
::
|
104
|
+
Install SpaCr with pip::
|
116
105
|
|
117
106
|
pip install spacr
|
118
107
|
|
119
|
-
Run
|
120
|
-
|
121
|
-
::
|
108
|
+
Run SpaCr GUI::
|
122
109
|
|
123
|
-
|
110
|
+
spacr
|
@@ -3,21 +3,21 @@ spacr/__main__.py,sha256=bkAJJD2kjIqOP-u1kLvct9jQQCeUXzlEjdgitwi1Lm8,75
|
|
3
3
|
spacr/alpha.py,sha256=Y95sLEfpK2OSYKRn3M8eUOU33JJeXfV8zhrC4KnwSTY,35244
|
4
4
|
spacr/annotate_app.py,sha256=imQ7ZEXDyM6ce1dxZ1xUS1-KequuF_NCI4xCaPLjvco,29275
|
5
5
|
spacr/annotate_app_v2.py,sha256=imQ7ZEXDyM6ce1dxZ1xUS1-KequuF_NCI4xCaPLjvco,29275
|
6
|
-
spacr/app_annotate.py,sha256=
|
7
|
-
spacr/app_classify.py,sha256=
|
8
|
-
spacr/app_make_masks.py,sha256=
|
9
|
-
spacr/app_make_masks_v2.py,sha256
|
10
|
-
spacr/app_mask.py,sha256=
|
11
|
-
spacr/app_measure.py,sha256=
|
6
|
+
spacr/app_annotate.py,sha256=vL4u_54bOZ2BO-azEgMG9HlNBXBLCzhIs10QggS6Adk,23572
|
7
|
+
spacr/app_classify.py,sha256=urTP_wlZ58hSyM5a19slYlBxN0PdC-9-ga0hvq8CGWc,165
|
8
|
+
spacr/app_make_masks.py,sha256=rV2zoxYsJ8-uR39mXjDMkbNcxv-6vq2POw4QUTDD8_U,45072
|
9
|
+
spacr/app_make_masks_v2.py,sha256=jmLYKJSPhI3Zf5MnbHqLNO2asI49a0BBOo2Y4p2uz4o,30528
|
10
|
+
spacr/app_mask.py,sha256=l-dBY8ftzCMdDe6-pXc2Nh_u-idNL9G7UOARiLJBtds,153
|
11
|
+
spacr/app_measure.py,sha256=_K7APYIeOKpV6e_LcqabBjvEi7mfq9Fch8175x1x0k8,162
|
12
12
|
spacr/chris.py,sha256=YlBjSgeZaY8HPy6jkrT_ISAnCMAKVfvCxF0I9eAZLFM,2418
|
13
13
|
spacr/classify_app.py,sha256=Zi15ryc1ocYitRF4kyxlC27XxGyzfSPdvj2d6ZrSh7E,8446
|
14
14
|
spacr/cli.py,sha256=507jfOOEV8BoL4eeUcblvH-iiDHdBrEVJLu1ghAAPSc,1800
|
15
15
|
spacr/core.py,sha256=m9fsk-qDPow4AzOYpTIsd4jT7PF_L_4y5xillR5eRdk,160253
|
16
|
-
spacr/deep_spacr.py,sha256=
|
16
|
+
spacr/deep_spacr.py,sha256=rvqOoY9dadcTcKiABf61Nb8HEMVp1NouFmtAE2ee1T4,37056
|
17
17
|
spacr/foldseek.py,sha256=YIP1d4Ci6CeA9jSyiv-HTDbNmAmcSM9Y_DaOs7wYzLY,33546
|
18
18
|
spacr/get_alfafold_structures.py,sha256=ehx_MQgb12k3hFecP6cYVlm5TLO8iWjgevy8ESyS3cw,3544
|
19
19
|
spacr/graph_learning.py,sha256=1tR-ZxvXE3dBz1Saw7BeVFcrsUFu9OlUZeZVifih9eo,13070
|
20
|
-
spacr/gui.py,sha256=
|
20
|
+
spacr/gui.py,sha256=1pumw2O0dfDZ4Hw4V8-pMlvODegDNulXsLNEFAnIB7c,7297
|
21
21
|
spacr/gui_2.py,sha256=ZAI5quQYbhQJ40vK0NCqU_UMSPLkpfeQpomBWUSM0fc,6946
|
22
22
|
spacr/gui_annotate.py,sha256=ugBksLGOHdtOLlEuRyyc59TrkYKu3rDf8JxEgiBSVao,6536
|
23
23
|
spacr/gui_classify_app.py,sha256=Zi15ryc1ocYitRF4kyxlC27XxGyzfSPdvj2d6ZrSh7E,8446
|
@@ -26,29 +26,29 @@ spacr/gui_make_masks_app_v2.py,sha256=X3izTBXdCZDlkVe-fbG-jmCQtcAbmK0OIivjyWaLhu
|
|
26
26
|
spacr/gui_mask_app.py,sha256=mhTl_XzXLFl8Tx3WYEMpdYB_qw9u5JJa0EdkvlcIzAE,10706
|
27
27
|
spacr/gui_measure_app.py,sha256=_C1-XFL5HSquUEEbM_NcxdvHx-socPFCx85MBG4d6xo,10598
|
28
28
|
spacr/gui_sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
|
-
spacr/gui_utils.py,sha256=
|
29
|
+
spacr/gui_utils.py,sha256=jnbvfovPGcwY_hmHudEryhSBG3hFOUsV_iNQSokGHpM,70160
|
30
30
|
spacr/io.py,sha256=IoERqSwoxJrInYl-E0WfwFOEDZXFdJofk5DmpbyLGWM,112077
|
31
31
|
spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
|
32
32
|
spacr/make_masks_app.py,sha256=iGaTwhowoe2JMOSOf8bJwQZTooRhLQx7KO0ewnAmqDY,45138
|
33
33
|
spacr/make_masks_app_v2.py,sha256=X3izTBXdCZDlkVe-fbG-jmCQtcAbmK0OIivjyWaLhug,30576
|
34
34
|
spacr/mask_app.py,sha256=mhTl_XzXLFl8Tx3WYEMpdYB_qw9u5JJa0EdkvlcIzAE,10706
|
35
|
-
spacr/measure.py,sha256=
|
35
|
+
spacr/measure.py,sha256=r5nxxULUyka2L5IVdnmEmnMywChY3a4DWGse3ygIh4Q,56000
|
36
36
|
spacr/measure_app.py,sha256=_C1-XFL5HSquUEEbM_NcxdvHx-socPFCx85MBG4d6xo,10598
|
37
37
|
spacr/old_code.py,sha256=jw67DAGoLBd7mWofVzRJSEmCI1Qrff26zIo65SEkV00,13817
|
38
38
|
spacr/plot.py,sha256=lrwU51OTWfby1wx73XGyjYmTjLVia7WOmGH5LZZ-4jM,67145
|
39
39
|
spacr/sequencing.py,sha256=U_TBJGNfOBfokGegUe950W_KPfm51VOgpfibXoZ8RMQ,83974
|
40
|
-
spacr/settings.py,sha256=
|
40
|
+
spacr/settings.py,sha256=ElHlNBNqvjtHFD7WC-QqKqXjMeosKXqJKnjeRX0mHVo,21456
|
41
41
|
spacr/sim.py,sha256=FveaVgBi3eypO2oVB5Dx-v0CC1Ny7UPfXkJiiRRodAk,71212
|
42
42
|
spacr/sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
43
|
spacr/timelapse.py,sha256=KMYCgHzf9LTZe-lWl5mvH2EjbKRE6OhpwdY13wEumGc,39504
|
44
|
-
spacr/utils.py,sha256=
|
44
|
+
spacr/utils.py,sha256=MM31yWquNDFmhxAU3l3Qx64peQJ6VWOuNGS6gkia5AY,186541
|
45
45
|
spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
|
46
46
|
spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
|
47
47
|
spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
|
48
48
|
spacr/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
|
49
|
-
spacr-0.1.
|
50
|
-
spacr-0.1.
|
51
|
-
spacr-0.1.
|
52
|
-
spacr-0.1.
|
53
|
-
spacr-0.1.
|
54
|
-
spacr-0.1.
|
49
|
+
spacr-0.1.50.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
|
50
|
+
spacr-0.1.50.dist-info/METADATA,sha256=5AUx1Qr2W-JmYcI3gGVkgO96mPAG01o8qj8_Mjlh6ho,5050
|
51
|
+
spacr-0.1.50.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
52
|
+
spacr-0.1.50.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
|
53
|
+
spacr-0.1.50.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
|
54
|
+
spacr-0.1.50.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,9 +0,0 @@
|
|
1
|
-
[console_scripts]
|
2
|
-
annotate = spacr.annotate_app_v2:gui_annotate
|
3
|
-
classify = spacr.gui_classify_app:gui_classify
|
4
|
-
gui = spacr.gui:gui_app
|
5
|
-
make_masks = spacr.gui_make_mask_app:gui_make_masks
|
6
|
-
make_masks2 = spacr.gui_make_mask_app_v2: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
|
File without changes
|