spacr 0.1.1__py3-none-any.whl → 0.1.12__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/__init__.py +12 -12
- spacr/annotate_app.py +258 -99
- spacr/annotate_app_v2.py +163 -4
- spacr/app_annotate.py +539 -0
- spacr/app_classify.py +201 -0
- spacr/app_make_masks.py +929 -0
- spacr/app_make_masks_v2.py +688 -0
- spacr/app_mask.py +251 -0
- spacr/app_measure.py +248 -0
- spacr/classify_app.py +201 -0
- spacr/gui.py +23 -20
- spacr/gui_annotate.py +145 -0
- spacr/gui_classify_app.py +20 -6
- spacr/gui_make_masks_app.py +927 -0
- spacr/gui_make_masks_app_v2.py +688 -0
- spacr/gui_mask_app.py +8 -4
- spacr/gui_measure_app.py +15 -5
- spacr/gui_utils.py +110 -20
- spacr/make_masks_app.py +929 -0
- spacr/make_masks_app_v2.py +688 -0
- spacr/mask_app.py +239 -915
- spacr/measure_app.py +246 -0
- spacr/sim_app.py +0 -0
- {spacr-0.1.1.dist-info → spacr-0.1.12.dist-info}/METADATA +5 -1
- spacr-0.1.12.dist-info/RECORD +54 -0
- {spacr-0.1.1.dist-info → spacr-0.1.12.dist-info}/entry_points.txt +3 -3
- spacr-0.1.1.dist-info/RECORD +0 -40
- {spacr-0.1.1.dist-info → spacr-0.1.12.dist-info}/LICENSE +0 -0
- {spacr-0.1.1.dist-info → spacr-0.1.12.dist-info}/WHEEL +0 -0
- {spacr-0.1.1.dist-info → spacr-0.1.12.dist-info}/top_level.txt +0 -0
spacr/measure_app.py
ADDED
@@ -0,0 +1,246 @@
|
|
1
|
+
import sys, traceback, matplotlib, ctypes
|
2
|
+
import tkinter as tk
|
3
|
+
from tkinter import ttk, scrolledtext
|
4
|
+
from matplotlib.figure import Figure
|
5
|
+
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
|
6
|
+
matplotlib.use('Agg') # Use the non-GUI Agg backend
|
7
|
+
from multiprocessing import Process, Queue, Value
|
8
|
+
from tkinter import filedialog
|
9
|
+
|
10
|
+
try:
|
11
|
+
ctypes.windll.shcore.SetProcessDpiAwareness(True)
|
12
|
+
except AttributeError:
|
13
|
+
pass
|
14
|
+
|
15
|
+
from .logger import log_function_call
|
16
|
+
from .gui_utils import ScrollableFrame, StdoutRedirector, CustomButton, ToggleSwitch, ToolTip
|
17
|
+
from .gui_utils import process_stdout_stderr, set_dark_style, set_default_font, generate_fields, main_thread_update_function, create_menu_bar
|
18
|
+
from .gui_utils import measure_variables, measure_crop_wrapper, clear_canvas, check_measure_gui_settings, read_settings_from_csv, update_settings_from_csv, style_text_boxes
|
19
|
+
|
20
|
+
thread_control = {"run_thread": None, "stop_requested": False}
|
21
|
+
|
22
|
+
def import_settings(scrollable_frame):
|
23
|
+
global vars_dict
|
24
|
+
|
25
|
+
csv_file_path = filedialog.askopenfilename(filetypes=[("CSV files", "*.csv")])
|
26
|
+
csv_settings = read_settings_from_csv(csv_file_path)
|
27
|
+
variables = measure_variables()
|
28
|
+
new_settings = update_settings_from_csv(variables, csv_settings)
|
29
|
+
vars_dict = generate_fields(new_settings, scrollable_frame)
|
30
|
+
|
31
|
+
def toggle_test_mode():
|
32
|
+
global vars_dict
|
33
|
+
current_state = vars_dict['test_mode'][2].get()
|
34
|
+
new_state = not current_state
|
35
|
+
vars_dict['test_mode'][2].set(new_state)
|
36
|
+
if new_state:
|
37
|
+
test_mode_button.config(bg="blue")
|
38
|
+
else:
|
39
|
+
test_mode_button.config(bg="gray")
|
40
|
+
|
41
|
+
def toggle_advanced_settings():
|
42
|
+
global vars_dict
|
43
|
+
|
44
|
+
timelapse_settings = ['timelapse', 'timelapse_objects']
|
45
|
+
misc_settings = ['representative_images', 'plot', 'plot_filtration', 'include_uninfected', 'dialate_pngs', 'dialate_png_ratios']
|
46
|
+
opperational_settings = ['max_workers','experiment','cells','cell_loc','pathogens','pathogen_loc','treatments','treatment_loc','channel_of_interest','compartments','measurement','nr_imgs', 'um_per_pixel']
|
47
|
+
|
48
|
+
advanced_settings = timelapse_settings+misc_settings+opperational_settings
|
49
|
+
|
50
|
+
# Toggle visibility of advanced settings
|
51
|
+
for setting in advanced_settings:
|
52
|
+
label, widget, var = vars_dict[setting]
|
53
|
+
if advanced_var.get() is False:
|
54
|
+
label.grid_remove() # Hide the label
|
55
|
+
widget.grid_remove() # Hide the widget
|
56
|
+
else:
|
57
|
+
label.grid() # Show the label
|
58
|
+
widget.grid() # Show the widget
|
59
|
+
|
60
|
+
#@log_function_call
|
61
|
+
def run_measure_gui(q, fig_queue, stop_requested):
|
62
|
+
global vars_dict
|
63
|
+
process_stdout_stderr(q)
|
64
|
+
try:
|
65
|
+
print('hello')
|
66
|
+
settings = check_measure_gui_settings(vars_dict)
|
67
|
+
measure_crop_wrapper(settings=settings, q=q, fig_queue=fig_queue)
|
68
|
+
except Exception as e:
|
69
|
+
q.put(f"Error during processing: {e}")
|
70
|
+
traceback.print_exc()
|
71
|
+
finally:
|
72
|
+
stop_requested.value = 1
|
73
|
+
|
74
|
+
#@log_function_call
|
75
|
+
def start_process(q, fig_queue):
|
76
|
+
global thread_control
|
77
|
+
if thread_control.get("run_thread") is not None:
|
78
|
+
initiate_abort()
|
79
|
+
|
80
|
+
stop_requested = Value('i', 0) # multiprocessing shared value for inter-process communication
|
81
|
+
thread_control["stop_requested"] = stop_requested
|
82
|
+
thread_control["run_thread"] = Process(target=run_measure_gui, args=(q, fig_queue, stop_requested))
|
83
|
+
thread_control["run_thread"].start()
|
84
|
+
|
85
|
+
#@log_function_call
|
86
|
+
def initiate_abort():
|
87
|
+
global thread_control
|
88
|
+
if thread_control.get("stop_requested") is not None:
|
89
|
+
thread_control["stop_requested"].value = 1
|
90
|
+
|
91
|
+
if thread_control.get("run_thread") is not None:
|
92
|
+
thread_control["run_thread"].join(timeout=5)
|
93
|
+
if thread_control["run_thread"].is_alive():
|
94
|
+
thread_control["run_thread"].terminate()
|
95
|
+
thread_control["run_thread"] = None
|
96
|
+
|
97
|
+
#@log_function_call
|
98
|
+
def initiate_measure_root(parent_frame):
|
99
|
+
global vars_dict, q, canvas, fig_queue, canvas_widget, thread_control, variables, advanced_var, scrollable_frame
|
100
|
+
|
101
|
+
style = ttk.Style(parent_frame)
|
102
|
+
set_dark_style(style)
|
103
|
+
style_text_boxes(style)
|
104
|
+
set_default_font(parent_frame, font_name="Helvetica", size=8)
|
105
|
+
|
106
|
+
parent_frame.configure(bg='black')
|
107
|
+
parent_frame.grid_rowconfigure(0, weight=1)
|
108
|
+
parent_frame.grid_columnconfigure(0, weight=1)
|
109
|
+
|
110
|
+
fig_queue = Queue()
|
111
|
+
|
112
|
+
# Initialize after_tasks if not already done
|
113
|
+
if not hasattr(parent_frame, 'after_tasks'):
|
114
|
+
parent_frame.after_tasks = []
|
115
|
+
|
116
|
+
def _process_fig_queue():
|
117
|
+
global canvas
|
118
|
+
try:
|
119
|
+
while not fig_queue.empty():
|
120
|
+
clear_canvas(canvas)
|
121
|
+
fig = fig_queue.get_nowait()
|
122
|
+
for ax in fig.get_axes():
|
123
|
+
ax.set_xticks([]) # Remove x-axis ticks
|
124
|
+
ax.set_yticks([]) # Remove y-axis ticks
|
125
|
+
ax.xaxis.set_visible(False) # Hide the x-axis
|
126
|
+
ax.yaxis.set_visible(False) # Hide the y-axis
|
127
|
+
fig.tight_layout()
|
128
|
+
fig.set_facecolor('black')
|
129
|
+
canvas.figure = fig
|
130
|
+
fig_width, fig_height = canvas_widget.winfo_width(), canvas_widget.winfo_height()
|
131
|
+
fig.set_size_inches(fig_width / fig.dpi, fig_height / fig.dpi, forward=True)
|
132
|
+
canvas.draw_idle()
|
133
|
+
except Exception as e:
|
134
|
+
traceback.print_exc()
|
135
|
+
finally:
|
136
|
+
after_id = canvas_widget.after(100, _process_fig_queue)
|
137
|
+
parent_frame.after_tasks.append(after_id)
|
138
|
+
|
139
|
+
def _process_console_queue():
|
140
|
+
while not q.empty():
|
141
|
+
message = q.get_nowait()
|
142
|
+
console_output.insert(tk.END, message)
|
143
|
+
console_output.see(tk.END)
|
144
|
+
after_id = console_output.after(100, _process_console_queue)
|
145
|
+
parent_frame.after_tasks.append(after_id)
|
146
|
+
|
147
|
+
# Clear previous content if any
|
148
|
+
for widget in parent_frame.winfo_children():
|
149
|
+
widget.destroy()
|
150
|
+
|
151
|
+
vertical_container = tk.PanedWindow(parent_frame, orient=tk.HORIZONTAL)
|
152
|
+
vertical_container.grid(row=0, column=0, sticky=tk.NSEW)
|
153
|
+
parent_frame.grid_rowconfigure(0, weight=1)
|
154
|
+
parent_frame.grid_columnconfigure(0, weight=1)
|
155
|
+
|
156
|
+
# Settings Section
|
157
|
+
settings_frame = tk.Frame(vertical_container, bg='black')
|
158
|
+
vertical_container.add(settings_frame, stretch="always")
|
159
|
+
settings_label = ttk.Label(settings_frame, text="Settings", background="black", foreground="white")
|
160
|
+
settings_label.grid(row=0, column=0, pady=10, padx=10)
|
161
|
+
scrollable_frame = ScrollableFrame(settings_frame, width=500)
|
162
|
+
scrollable_frame.grid(row=1, column=0, sticky="nsew")
|
163
|
+
settings_frame.grid_rowconfigure(1, weight=1)
|
164
|
+
settings_frame.grid_columnconfigure(0, weight=1)
|
165
|
+
|
166
|
+
# Create advanced settings checkbox
|
167
|
+
advanced_var = tk.BooleanVar(value=False)
|
168
|
+
advanced_Toggle = ToggleSwitch(scrollable_frame.scrollable_frame, text="Advanced Settings", variable=advanced_var, command=toggle_advanced_settings)
|
169
|
+
advanced_Toggle.grid(row=48, column=0, pady=10, padx=10)
|
170
|
+
variables = measure_variables()
|
171
|
+
vars_dict = generate_fields(variables, scrollable_frame)
|
172
|
+
toggle_advanced_settings()
|
173
|
+
vars_dict['Test mode'] = (None, None, tk.BooleanVar(value=False))
|
174
|
+
|
175
|
+
# Button section
|
176
|
+
test_mode_button = CustomButton(scrollable_frame.scrollable_frame, text="Test Mode", command=toggle_test_mode)
|
177
|
+
test_mode_button.grid(row=47, column=1, pady=10, padx=10)
|
178
|
+
import_btn = CustomButton(scrollable_frame.scrollable_frame, text="Import", command=lambda: import_settings(scrollable_frame), font=('Helvetica', 10))
|
179
|
+
import_btn.grid(row=47, column=0, pady=20, padx=20)
|
180
|
+
run_button = CustomButton(scrollable_frame.scrollable_frame, text="Run", command=lambda: start_process(q, fig_queue), font=('Helvetica', 10))
|
181
|
+
run_button.grid(row=45, column=0, pady=20, padx=20)
|
182
|
+
abort_button = CustomButton(scrollable_frame.scrollable_frame, text="Abort", command=initiate_abort, font=('Helvetica', 10))
|
183
|
+
abort_button.grid(row=45, column=1, pady=20, padx=20)
|
184
|
+
progress_label = ttk.Label(scrollable_frame.scrollable_frame, text="Processing: 0%", background="black", foreground="white") # Create progress field
|
185
|
+
progress_label.grid(row=50, column=0, columnspan=2, sticky="ew", pady=(5, 0), padx=10)
|
186
|
+
|
187
|
+
# Plot Canvas Section
|
188
|
+
plot_frame = tk.PanedWindow(vertical_container, orient=tk.VERTICAL)
|
189
|
+
vertical_container.add(plot_frame, stretch="always")
|
190
|
+
figure = Figure(figsize=(30, 4), dpi=100, facecolor='black')
|
191
|
+
plot = figure.add_subplot(111)
|
192
|
+
plot.plot([], [])
|
193
|
+
plot.axis('off')
|
194
|
+
canvas = FigureCanvasTkAgg(figure, master=plot_frame)
|
195
|
+
canvas.get_tk_widget().configure(cursor='arrow', background='black', highlightthickness=0)
|
196
|
+
canvas_widget = canvas.get_tk_widget()
|
197
|
+
plot_frame.add(canvas_widget, stretch="always")
|
198
|
+
canvas.draw()
|
199
|
+
canvas.figure = figure
|
200
|
+
|
201
|
+
# Console Section
|
202
|
+
console_frame = tk.Frame(vertical_container, bg='black')
|
203
|
+
vertical_container.add(console_frame, stretch="always")
|
204
|
+
console_label = ttk.Label(console_frame, text="Console", background="black", foreground="white")
|
205
|
+
console_label.grid(row=0, column=0, pady=10, padx=10)
|
206
|
+
console_output = scrolledtext.ScrolledText(console_frame, height=10, bg='black', fg='white', insertbackground='white')
|
207
|
+
console_output.grid(row=1, column=0, sticky="nsew")
|
208
|
+
console_frame.grid_rowconfigure(1, weight=1)
|
209
|
+
console_frame.grid_columnconfigure(0, weight=1)
|
210
|
+
|
211
|
+
q = Queue()
|
212
|
+
sys.stdout = StdoutRedirector(console_output)
|
213
|
+
sys.stderr = StdoutRedirector(console_output)
|
214
|
+
|
215
|
+
_process_console_queue()
|
216
|
+
_process_fig_queue()
|
217
|
+
|
218
|
+
after_id = parent_frame.after(100, lambda: main_thread_update_function(parent_frame, q, fig_queue, canvas_widget, progress_label))
|
219
|
+
parent_frame.after_tasks.append(after_id)
|
220
|
+
|
221
|
+
return parent_frame, vars_dict
|
222
|
+
|
223
|
+
def gui_measure():
|
224
|
+
root = tk.Tk()
|
225
|
+
width = root.winfo_screenwidth()
|
226
|
+
height = root.winfo_screenheight()
|
227
|
+
root.geometry(f"{width}x{height}")
|
228
|
+
root.title("SpaCr: measure objects")
|
229
|
+
|
230
|
+
# Clear previous content if any
|
231
|
+
if hasattr(root, 'content_frame'):
|
232
|
+
for widget in root.content_frame.winfo_children():
|
233
|
+
widget.destroy()
|
234
|
+
root.content_frame.grid_forget()
|
235
|
+
else:
|
236
|
+
root.content_frame = tk.Frame(root)
|
237
|
+
root.content_frame.grid(row=1, column=0, sticky="nsew")
|
238
|
+
root.grid_rowconfigure(1, weight=1)
|
239
|
+
root.grid_columnconfigure(0, weight=1)
|
240
|
+
|
241
|
+
initiate_measure_root(root.content_frame)
|
242
|
+
create_menu_bar(root)
|
243
|
+
root.mainloop()
|
244
|
+
|
245
|
+
if __name__ == "__main__":
|
246
|
+
gui_measure()
|
spacr/sim_app.py
ADDED
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: spacr
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.12
|
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
|
@@ -40,6 +40,10 @@ Requires-Dist: ttf-opensans >=2020.10.30
|
|
40
40
|
Requires-Dist: customtkinter <6.0,>=5.2.2
|
41
41
|
Requires-Dist: biopython <2.0,>=1.80
|
42
42
|
Requires-Dist: lxml <6.0,>=5.1.0
|
43
|
+
Requires-Dist: qtpy <2.5,>=2.4.1
|
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
|
43
47
|
Provides-Extra: dev
|
44
48
|
Requires-Dist: pytest >=3.9 ; extra == 'dev'
|
45
49
|
Provides-Extra: full
|
@@ -0,0 +1,54 @@
|
|
1
|
+
spacr/__init__.py,sha256=xu2zNv8A523YvDACynkThH2CYqN5mafsu9lfKGjMmIM,1278
|
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=I0c-Q5WYkA2lCKyNByACM1YzSdLC17X2mNJ2XAnWgNQ,23619
|
7
|
+
spacr/app_classify.py,sha256=052t5MeUsP6IdJTA_uWY4AmyBHTkf8_KdslfDWtP7pk,8428
|
8
|
+
spacr/app_make_masks.py,sha256=fIlWG13PMrafvwj92el1Puo48CJy4Q3iINOXa5mW3oI,45136
|
9
|
+
spacr/app_make_masks_v2.py,sha256=-HhEgi0ber1Jyjp5RgqUcZM4vPvGXPKh1pv3SLyVZoU,30574
|
10
|
+
spacr/app_mask.py,sha256=kp0Zvw9uA-Z8FfuKChrXo1DA01_H7fdKCsFZzmKKrtI,10731
|
11
|
+
spacr/app_measure.py,sha256=85ux3Udw0GRjr7h2XoID752wvQCTtdHsfFSQOwWOkV0,10623
|
12
|
+
spacr/chris.py,sha256=YlBjSgeZaY8HPy6jkrT_ISAnCMAKVfvCxF0I9eAZLFM,2418
|
13
|
+
spacr/classify_app.py,sha256=Zi15ryc1ocYitRF4kyxlC27XxGyzfSPdvj2d6ZrSh7E,8446
|
14
|
+
spacr/cli.py,sha256=507jfOOEV8BoL4eeUcblvH-iiDHdBrEVJLu1ghAAPSc,1800
|
15
|
+
spacr/core.py,sha256=m9fsk-qDPow4AzOYpTIsd4jT7PF_L_4y5xillR5eRdk,160253
|
16
|
+
spacr/deep_spacr.py,sha256=N0o7ILD2p1FTfU4DFxnpjs00xjLhwib-ev0XGqA6muU,37035
|
17
|
+
spacr/foldseek.py,sha256=YIP1d4Ci6CeA9jSyiv-HTDbNmAmcSM9Y_DaOs7wYzLY,33546
|
18
|
+
spacr/get_alfafold_structures.py,sha256=ehx_MQgb12k3hFecP6cYVlm5TLO8iWjgevy8ESyS3cw,3544
|
19
|
+
spacr/graph_learning.py,sha256=1tR-ZxvXE3dBz1Saw7BeVFcrsUFu9OlUZeZVifih9eo,13070
|
20
|
+
spacr/gui.py,sha256=nwRqK3DLYrJQh4iCoyfJMpwSuxCn1xc4zHLmQ8cW8Is,6519
|
21
|
+
spacr/gui_2.py,sha256=ZAI5quQYbhQJ40vK0NCqU_UMSPLkpfeQpomBWUSM0fc,6946
|
22
|
+
spacr/gui_annotate.py,sha256=ugBksLGOHdtOLlEuRyyc59TrkYKu3rDf8JxEgiBSVao,6536
|
23
|
+
spacr/gui_classify_app.py,sha256=Zi15ryc1ocYitRF4kyxlC27XxGyzfSPdvj2d6ZrSh7E,8446
|
24
|
+
spacr/gui_make_masks_app.py,sha256=tl4M4Q2WQgrrwjRBJVevxJxpNowqzPhWkdCOm2UfRbw,45053
|
25
|
+
spacr/gui_make_masks_app_v2.py,sha256=X3izTBXdCZDlkVe-fbG-jmCQtcAbmK0OIivjyWaLhug,30576
|
26
|
+
spacr/gui_mask_app.py,sha256=mhTl_XzXLFl8Tx3WYEMpdYB_qw9u5JJa0EdkvlcIzAE,10706
|
27
|
+
spacr/gui_measure_app.py,sha256=_C1-XFL5HSquUEEbM_NcxdvHx-socPFCx85MBG4d6xo,10598
|
28
|
+
spacr/gui_sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
|
+
spacr/gui_utils.py,sha256=n_juaV_-DspNab9NNncWauB9wKCd7lPcvoKsjKfWFrk,56436
|
30
|
+
spacr/io.py,sha256=IoERqSwoxJrInYl-E0WfwFOEDZXFdJofk5DmpbyLGWM,112077
|
31
|
+
spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
|
32
|
+
spacr/make_masks_app.py,sha256=iGaTwhowoe2JMOSOf8bJwQZTooRhLQx7KO0ewnAmqDY,45138
|
33
|
+
spacr/make_masks_app_v2.py,sha256=X3izTBXdCZDlkVe-fbG-jmCQtcAbmK0OIivjyWaLhug,30576
|
34
|
+
spacr/mask_app.py,sha256=mhTl_XzXLFl8Tx3WYEMpdYB_qw9u5JJa0EdkvlcIzAE,10706
|
35
|
+
spacr/measure.py,sha256=0FRsHF5ftar4JZ0B_6Nq-NlyP5t6aiO0IrskyikIBEE,55000
|
36
|
+
spacr/measure_app.py,sha256=_C1-XFL5HSquUEEbM_NcxdvHx-socPFCx85MBG4d6xo,10598
|
37
|
+
spacr/old_code.py,sha256=jw67DAGoLBd7mWofVzRJSEmCI1Qrff26zIo65SEkV00,13817
|
38
|
+
spacr/plot.py,sha256=lrwU51OTWfby1wx73XGyjYmTjLVia7WOmGH5LZZ-4jM,67145
|
39
|
+
spacr/sequencing.py,sha256=U_TBJGNfOBfokGegUe950W_KPfm51VOgpfibXoZ8RMQ,83974
|
40
|
+
spacr/settings.py,sha256=Tr2fo2I75FGfmEVQOONOpGwqXMzFCrYMz4NAxav3ckg,21183
|
41
|
+
spacr/sim.py,sha256=FveaVgBi3eypO2oVB5Dx-v0CC1Ny7UPfXkJiiRRodAk,71212
|
42
|
+
spacr/sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
|
+
spacr/timelapse.py,sha256=KMYCgHzf9LTZe-lWl5mvH2EjbKRE6OhpwdY13wEumGc,39504
|
44
|
+
spacr/utils.py,sha256=O7dpCF3bU95d2v0UuPFeJtzXYrkh0r-6aLxaqkKkFwY,184619
|
45
|
+
spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
|
46
|
+
spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
|
47
|
+
spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
|
48
|
+
spacr/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
|
49
|
+
spacr-0.1.12.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
|
50
|
+
spacr-0.1.12.dist-info/METADATA,sha256=ppvYUfj-bd4G-fel8rkLsj8tR7J-7Fkh6sQupjufIqQ,5301
|
51
|
+
spacr-0.1.12.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
52
|
+
spacr-0.1.12.dist-info/entry_points.txt,sha256=PxmdWbth1nQzQfE0s2M3XST_of47tBtlBPH20KJrvkE,354
|
53
|
+
spacr-0.1.12.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
|
54
|
+
spacr-0.1.12.dist-info/RECORD,,
|
@@ -1,9 +1,9 @@
|
|
1
1
|
[console_scripts]
|
2
|
-
annotate = spacr.
|
2
|
+
annotate = spacr.annotate_app_v2:gui_annotate
|
3
3
|
classify = spacr.gui_classify_app:gui_classify
|
4
4
|
gui = spacr.gui:gui_app
|
5
|
-
|
6
|
-
|
5
|
+
make_masks = spacr.gui_make_mask_app:gui_make_masks
|
6
|
+
make_masks2 = spacr.gui_make_mask_app_v2:gui_make_masks
|
7
7
|
mask = spacr.gui_mask_app:gui_mask
|
8
8
|
measure = spacr.gui_measure_app:gui_measure
|
9
9
|
sim = spacr.gui_sim_app:gui_sim
|
spacr-0.1.1.dist-info/RECORD
DELETED
@@ -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,,
|
File without changes
|
File without changes
|
File without changes
|