waveorder 3.0.0a0__py3-none-any.whl → 3.0.0a1__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.
- tests/cli_tests/test_reconstruct.py +1 -2
- waveorder/_version.py +2 -2
- waveorder/acq/acquisition_workers.py +6 -6
- waveorder/calib/calibration_workers.py +4 -4
- waveorder/cli/apply_inverse_transfer_function.py +17 -100
- waveorder/cli/compute_transfer_function.py +2 -2
- waveorder/cli/jobs_mgmt.py +1 -3
- waveorder/cli/main.py +10 -6
- waveorder/cli/monitor.py +1 -1
- waveorder/cli/parsing.py +0 -27
- waveorder/cli/reconstruct.py +2 -10
- waveorder/cli/utils.py +24 -0
- {waveorder-3.0.0a0.dist-info → waveorder-3.0.0a1.dist-info}/METADATA +1 -2
- {waveorder-3.0.0a0.dist-info → waveorder-3.0.0a1.dist-info}/RECORD +18 -18
- {waveorder-3.0.0a0.dist-info → waveorder-3.0.0a1.dist-info}/WHEEL +0 -0
- {waveorder-3.0.0a0.dist-info → waveorder-3.0.0a1.dist-info}/entry_points.txt +0 -0
- {waveorder-3.0.0a0.dist-info → waveorder-3.0.0a1.dist-info}/licenses/LICENSE +0 -0
- {waveorder-3.0.0a0.dist-info → waveorder-3.0.0a1.dist-info}/top_level.txt +0 -0
|
@@ -219,7 +219,6 @@ def test_cli_apply_inv_tf_mock(tmp_input_path_zarr):
|
|
|
219
219
|
Path(tmp_config_yml),
|
|
220
220
|
Path(result_path),
|
|
221
221
|
1,
|
|
222
|
-
1,
|
|
223
222
|
)
|
|
224
223
|
assert result_inv.exit_code == 0
|
|
225
224
|
|
|
@@ -254,7 +253,7 @@ def test_cli_apply_inv_tf_output(tmp_input_path_zarr, capsys):
|
|
|
254
253
|
|
|
255
254
|
assert result_path.exists()
|
|
256
255
|
captured = capsys.readouterr()
|
|
257
|
-
assert "
|
|
256
|
+
assert "Starting reconstruction" in captured.out
|
|
258
257
|
|
|
259
258
|
# Check scale transformations pass through
|
|
260
259
|
assert input_scale == result_dataset.scale
|
waveorder/_version.py
CHANGED
|
@@ -17,5 +17,5 @@ __version__: str
|
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
|
18
18
|
version_tuple: VERSION_TUPLE
|
|
19
19
|
|
|
20
|
-
__version__ = version = '3.0.
|
|
21
|
-
__version_tuple__ = version_tuple = (3, 0, 0, '
|
|
20
|
+
__version__ = version = '3.0.0a1'
|
|
21
|
+
__version_tuple__ = version_tuple = (3, 0, 0, 'a1')
|
|
@@ -20,10 +20,10 @@ from waveorder.acq.acq_functions import (
|
|
|
20
20
|
)
|
|
21
21
|
from waveorder.cli import settings
|
|
22
22
|
from waveorder.cli.apply_inverse_transfer_function import (
|
|
23
|
-
|
|
23
|
+
_apply_inverse_transfer_function_cli,
|
|
24
24
|
)
|
|
25
25
|
from waveorder.cli.compute_transfer_function import (
|
|
26
|
-
|
|
26
|
+
_compute_transfer_function_cli,
|
|
27
27
|
)
|
|
28
28
|
from waveorder.io.utils import add_index_to_path, model_to_yaml, ram_message
|
|
29
29
|
|
|
@@ -306,13 +306,13 @@ class BFAcquisitionWorker(WorkerBase):
|
|
|
306
306
|
input_data_path = Path(self.latest_out_path) / "0" / "0" / "0"
|
|
307
307
|
|
|
308
308
|
# TODO: skip if config files match
|
|
309
|
-
|
|
309
|
+
_compute_transfer_function_cli(
|
|
310
310
|
input_position_dirpath=input_data_path,
|
|
311
311
|
config_filepath=self.config_path,
|
|
312
312
|
output_dirpath=transfer_function_path,
|
|
313
313
|
)
|
|
314
314
|
|
|
315
|
-
|
|
315
|
+
_apply_inverse_transfer_function_cli(
|
|
316
316
|
input_position_dirpaths=[input_data_path],
|
|
317
317
|
transfer_function_dirpath=transfer_function_path,
|
|
318
318
|
config_filepath=self.config_path,
|
|
@@ -587,13 +587,13 @@ class PolarizationAcquisitionWorker(WorkerBase):
|
|
|
587
587
|
input_data_path = Path(self.latest_out_path) / "0" / "0" / "0"
|
|
588
588
|
|
|
589
589
|
# TODO: skip if config files match
|
|
590
|
-
|
|
590
|
+
_compute_transfer_function_cli(
|
|
591
591
|
input_position_dirpath=input_data_path,
|
|
592
592
|
config_filepath=self.config_path,
|
|
593
593
|
output_dirpath=transfer_function_path,
|
|
594
594
|
)
|
|
595
595
|
|
|
596
|
-
|
|
596
|
+
_apply_inverse_transfer_function_cli(
|
|
597
597
|
input_position_dirpaths=[input_data_path],
|
|
598
598
|
transfer_function_dirpath=transfer_function_path,
|
|
599
599
|
config_filepath=self.config_path,
|
|
@@ -15,10 +15,10 @@ from qtpy.QtCore import Signal
|
|
|
15
15
|
from waveorder.calib.Calibration import LC_DEVICE_NAME
|
|
16
16
|
from waveorder.cli import settings
|
|
17
17
|
from waveorder.cli.apply_inverse_transfer_function import (
|
|
18
|
-
|
|
18
|
+
_apply_inverse_transfer_function_cli,
|
|
19
19
|
)
|
|
20
20
|
from waveorder.cli.compute_transfer_function import (
|
|
21
|
-
|
|
21
|
+
_compute_transfer_function_cli,
|
|
22
22
|
)
|
|
23
23
|
from waveorder.io.core_functions import set_lc_state, snap_and_average
|
|
24
24
|
from waveorder.io.metadata_reader import MetadataReader
|
|
@@ -345,13 +345,13 @@ class BackgroundCaptureWorker(
|
|
|
345
345
|
transfer_function_path = bg_path / "transfer_function.zarr"
|
|
346
346
|
reconstruction_path = bg_path / "reconstruction.zarr"
|
|
347
347
|
|
|
348
|
-
|
|
348
|
+
_compute_transfer_function_cli(
|
|
349
349
|
input_position_dirpath=input_data_path,
|
|
350
350
|
config_filepath=reconstruction_config_path,
|
|
351
351
|
output_dirpath=transfer_function_path,
|
|
352
352
|
)
|
|
353
353
|
|
|
354
|
-
|
|
354
|
+
_apply_inverse_transfer_function_cli(
|
|
355
355
|
input_position_dirpaths=[input_data_path],
|
|
356
356
|
transfer_function_dirpath=transfer_function_path,
|
|
357
357
|
config_filepath=reconstruction_config_path,
|
|
@@ -1,25 +1,20 @@
|
|
|
1
1
|
import itertools
|
|
2
|
-
import os
|
|
3
2
|
import warnings
|
|
4
3
|
from functools import partial
|
|
5
4
|
from pathlib import Path
|
|
6
|
-
from typing import Final
|
|
7
5
|
|
|
8
6
|
import click
|
|
9
7
|
import numpy as np
|
|
10
|
-
import submitit
|
|
11
8
|
import torch
|
|
12
9
|
import torch.multiprocessing as mp
|
|
13
10
|
from iohub import open_ome_zarr
|
|
14
11
|
|
|
15
12
|
from waveorder.cli import apply_inverse_models, jobs_mgmt
|
|
16
|
-
from waveorder.cli.monitor import monitor_jobs
|
|
17
13
|
from waveorder.cli.parsing import (
|
|
18
14
|
config_filepath,
|
|
19
15
|
input_position_dirpaths,
|
|
20
16
|
output_dirpath,
|
|
21
17
|
processes_option,
|
|
22
|
-
ram_multiplier,
|
|
23
18
|
transfer_function_dirpath,
|
|
24
19
|
)
|
|
25
20
|
from waveorder.cli.printing import echo_headline, echo_settings
|
|
@@ -296,125 +291,48 @@ def apply_inverse_transfer_function_cli(
|
|
|
296
291
|
transfer_function_dirpath: Path,
|
|
297
292
|
config_filepath: Path,
|
|
298
293
|
output_dirpath: Path,
|
|
299
|
-
num_processes
|
|
300
|
-
ram_multiplier: float = 1.0,
|
|
301
|
-
unique_id: str = "",
|
|
294
|
+
num_processes,
|
|
302
295
|
) -> None:
|
|
296
|
+
# Prepare output store
|
|
303
297
|
output_metadata = get_reconstruction_output_metadata(
|
|
304
298
|
input_position_dirpaths[0], config_filepath
|
|
305
299
|
)
|
|
300
|
+
|
|
306
301
|
create_empty_hcs_zarr(
|
|
307
302
|
store_path=output_dirpath,
|
|
308
303
|
position_keys=[p.parts[-3:] for p in input_position_dirpaths],
|
|
309
304
|
**output_metadata,
|
|
310
305
|
)
|
|
311
|
-
|
|
306
|
+
|
|
307
|
+
# Initialize torch threads
|
|
312
308
|
if num_processes > 1:
|
|
313
309
|
torch.set_num_threads(1)
|
|
314
310
|
torch.set_num_interop_threads(1)
|
|
315
311
|
|
|
316
|
-
#
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
if settings.birefringence is not None:
|
|
327
|
-
gb_ram_request += input_memory * voxel_resource_multiplier
|
|
328
|
-
if settings.phase is not None:
|
|
329
|
-
gb_ram_request += input_memory * fourier_resource_multiplier
|
|
330
|
-
if settings.fluorescence is not None:
|
|
331
|
-
gb_ram_request += input_memory * fourier_resource_multiplier
|
|
332
|
-
|
|
333
|
-
gb_ram_request = np.ceil(
|
|
334
|
-
np.max([1, ram_multiplier * gb_ram_request])
|
|
335
|
-
).astype(int)
|
|
336
|
-
cpu_request = np.min([32, num_processes])
|
|
337
|
-
num_jobs = len(input_position_dirpaths)
|
|
338
|
-
|
|
339
|
-
# Prepare and submit jobs
|
|
340
|
-
echo_headline(
|
|
341
|
-
f"Preparing {num_jobs} job{'s, each with' if num_jobs > 1 else ' with'} "
|
|
342
|
-
f"{cpu_request} CPU{'s' if cpu_request > 1 else ''} and "
|
|
343
|
-
f"{gb_ram_request} GB of memory per CPU."
|
|
344
|
-
)
|
|
345
|
-
|
|
346
|
-
name_without_ext = os.path.splitext(Path(output_dirpath).name)[0]
|
|
347
|
-
executor_folder = os.path.join(
|
|
348
|
-
Path(output_dirpath).parent.absolute(), name_without_ext + "_logs"
|
|
349
|
-
)
|
|
350
|
-
executor = submitit.AutoExecutor(folder=Path(executor_folder))
|
|
351
|
-
|
|
352
|
-
executor.update_parameters(
|
|
353
|
-
slurm_array_parallelism=np.min([50, num_jobs]),
|
|
354
|
-
slurm_mem_per_cpu=f"{gb_ram_request}G",
|
|
355
|
-
slurm_cpus_per_task=cpu_request,
|
|
356
|
-
slurm_time=60,
|
|
357
|
-
slurm_partition="cpu",
|
|
358
|
-
timeout_min=jobs_mgmt.JOBS_TIMEOUT,
|
|
359
|
-
# more slurm_*** resource parameters here
|
|
360
|
-
)
|
|
361
|
-
|
|
362
|
-
jobs = []
|
|
363
|
-
with executor.batch():
|
|
364
|
-
for input_position_dirpath in input_position_dirpaths:
|
|
365
|
-
job: Final = executor.submit(
|
|
366
|
-
apply_inverse_transfer_function_single_position,
|
|
367
|
-
input_position_dirpath,
|
|
368
|
-
transfer_function_dirpath,
|
|
369
|
-
config_filepath,
|
|
370
|
-
output_dirpath / Path(*input_position_dirpath.parts[-3:]),
|
|
371
|
-
num_processes,
|
|
372
|
-
output_metadata["channel_names"],
|
|
373
|
-
)
|
|
374
|
-
jobs.append(job)
|
|
375
|
-
echo_headline(
|
|
376
|
-
f"{num_jobs} job{'s' if num_jobs > 1 else ''} submitted {'locally' if executor.cluster == 'local' else 'via ' + executor.cluster}."
|
|
377
|
-
)
|
|
378
|
-
|
|
379
|
-
doPrint = True # CLI prints Job status when used as cmd line
|
|
380
|
-
if (
|
|
381
|
-
unique_id != ""
|
|
382
|
-
): # no unique_id means no job submission info being listened to
|
|
383
|
-
JM.start_client()
|
|
384
|
-
i = 0
|
|
385
|
-
for j in jobs:
|
|
386
|
-
job: submitit.Job = j
|
|
387
|
-
job_idx: str = job.job_id
|
|
388
|
-
position = input_position_dirpaths[i]
|
|
389
|
-
JM.put_Job_in_list(
|
|
390
|
-
job,
|
|
391
|
-
unique_id,
|
|
392
|
-
str(job_idx),
|
|
393
|
-
position,
|
|
394
|
-
str(executor.folder.absolute()),
|
|
395
|
-
)
|
|
396
|
-
i += 1
|
|
397
|
-
JM.send_data_thread()
|
|
398
|
-
JM.set_shorter_timeout()
|
|
399
|
-
doPrint = False # CLI printing disabled when using GUI
|
|
400
|
-
|
|
401
|
-
monitor_jobs(jobs, input_position_dirpaths, doPrint)
|
|
312
|
+
# Loop through positions
|
|
313
|
+
for input_position_dirpath in input_position_dirpaths:
|
|
314
|
+
apply_inverse_transfer_function_single_position(
|
|
315
|
+
input_position_dirpath,
|
|
316
|
+
transfer_function_dirpath,
|
|
317
|
+
config_filepath,
|
|
318
|
+
output_dirpath / Path(*input_position_dirpath.parts[-3:]),
|
|
319
|
+
num_processes,
|
|
320
|
+
output_metadata["channel_names"],
|
|
321
|
+
)
|
|
402
322
|
|
|
403
323
|
|
|
404
|
-
@click.command()
|
|
324
|
+
@click.command("apply-inv-tf")
|
|
405
325
|
@input_position_dirpaths()
|
|
406
326
|
@transfer_function_dirpath()
|
|
407
327
|
@config_filepath()
|
|
408
328
|
@output_dirpath()
|
|
409
329
|
@processes_option(default=1)
|
|
410
|
-
|
|
411
|
-
def apply_inv_tf(
|
|
330
|
+
def _apply_inverse_transfer_function_cli(
|
|
412
331
|
input_position_dirpaths: list[Path],
|
|
413
332
|
transfer_function_dirpath: Path,
|
|
414
333
|
config_filepath: Path,
|
|
415
334
|
output_dirpath: Path,
|
|
416
335
|
num_processes,
|
|
417
|
-
ram_multiplier: float = 1.0,
|
|
418
336
|
) -> None:
|
|
419
337
|
"""
|
|
420
338
|
Apply an inverse transfer function to a dataset using a configuration file.
|
|
@@ -434,5 +352,4 @@ def apply_inv_tf(
|
|
|
434
352
|
config_filepath,
|
|
435
353
|
output_dirpath,
|
|
436
354
|
num_processes,
|
|
437
|
-
ram_multiplier,
|
|
438
355
|
)
|
|
@@ -277,11 +277,11 @@ def compute_transfer_function_cli(
|
|
|
277
277
|
)
|
|
278
278
|
|
|
279
279
|
|
|
280
|
-
@click.command()
|
|
280
|
+
@click.command("compute-tf")
|
|
281
281
|
@input_position_dirpaths()
|
|
282
282
|
@config_filepath()
|
|
283
283
|
@output_dirpath()
|
|
284
|
-
def
|
|
284
|
+
def _compute_transfer_function_cli(
|
|
285
285
|
input_position_dirpaths: list[Path],
|
|
286
286
|
config_filepath: Path,
|
|
287
287
|
output_dirpath: Path,
|
waveorder/cli/jobs_mgmt.py
CHANGED
|
@@ -5,8 +5,6 @@ import threading
|
|
|
5
5
|
import time
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
|
|
8
|
-
import submitit
|
|
9
|
-
|
|
10
8
|
DIR_PATH = os.path.dirname(os.path.realpath(__file__))
|
|
11
9
|
FILE_PATH = os.path.join(DIR_PATH, "main.py")
|
|
12
10
|
|
|
@@ -122,7 +120,7 @@ class JobsManagement:
|
|
|
122
120
|
def check_all_ExpJobs_completion(self, uID):
|
|
123
121
|
if uID in SERVER_uIDsjobIDs.keys():
|
|
124
122
|
for jobEntry in SERVER_uIDsjobIDs[uID].keys():
|
|
125
|
-
job
|
|
123
|
+
job = SERVER_uIDsjobIDs[uID][jobEntry]["job"]
|
|
126
124
|
jobBool = SERVER_uIDsjobIDs[uID][jobEntry]["bool"]
|
|
127
125
|
if job is not None and job.done() == False:
|
|
128
126
|
return False
|
waveorder/cli/main.py
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import click
|
|
2
2
|
|
|
3
|
-
from waveorder.cli.apply_inverse_transfer_function import
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
from waveorder.cli.apply_inverse_transfer_function import (
|
|
4
|
+
_apply_inverse_transfer_function_cli,
|
|
5
|
+
)
|
|
6
|
+
from waveorder.cli.compute_transfer_function import (
|
|
7
|
+
_compute_transfer_function_cli,
|
|
8
|
+
)
|
|
9
|
+
from waveorder.cli.reconstruct import _reconstruct_cli
|
|
6
10
|
|
|
7
11
|
try:
|
|
8
12
|
from waveorder.cli.gui_widget import gui
|
|
@@ -23,9 +27,9 @@ def cli():
|
|
|
23
27
|
"""\033[92mwaveorder: Computational Toolkit for Label-Free Imaging\033[0m\n"""
|
|
24
28
|
|
|
25
29
|
|
|
26
|
-
cli.add_command(
|
|
27
|
-
cli.add_command(
|
|
28
|
-
cli.add_command(
|
|
30
|
+
cli.add_command(_reconstruct_cli)
|
|
31
|
+
cli.add_command(_compute_transfer_function_cli)
|
|
32
|
+
cli.add_command(_apply_inverse_transfer_function_cli)
|
|
29
33
|
try:
|
|
30
34
|
cli.add_command(gui)
|
|
31
35
|
except:
|
waveorder/cli/monitor.py
CHANGED
|
@@ -117,7 +117,7 @@ def monitor_jobs(
|
|
|
117
117
|
|
|
118
118
|
# print all jobs once if terminal is too small
|
|
119
119
|
if shutil.get_terminal_size().lines - NON_JOB_LINES < len(jobs):
|
|
120
|
-
_print_status(jobs, position_dirpaths, elapsed_list, do_print)
|
|
120
|
+
_print_status(jobs, position_dirpaths, elapsed_list, do_print=do_print)
|
|
121
121
|
|
|
122
122
|
# main monitor loop
|
|
123
123
|
try:
|
waveorder/cli/parsing.py
CHANGED
|
@@ -106,30 +106,3 @@ def processes_option(default: int = None) -> Callable:
|
|
|
106
106
|
)(f)
|
|
107
107
|
|
|
108
108
|
return decorator
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
def ram_multiplier() -> Callable:
|
|
112
|
-
def decorator(f: Callable) -> Callable:
|
|
113
|
-
return click.option(
|
|
114
|
-
"--ram-multiplier",
|
|
115
|
-
"-rx",
|
|
116
|
-
default=1.0,
|
|
117
|
-
type=float,
|
|
118
|
-
help="SLURM RAM multiplier.",
|
|
119
|
-
)(f)
|
|
120
|
-
|
|
121
|
-
return decorator
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
def unique_id() -> Callable:
|
|
125
|
-
def decorator(f: Callable) -> Callable:
|
|
126
|
-
return click.option(
|
|
127
|
-
"--unique-id",
|
|
128
|
-
"-uid",
|
|
129
|
-
default="",
|
|
130
|
-
required=False,
|
|
131
|
-
type=str,
|
|
132
|
-
help="Unique ID.",
|
|
133
|
-
)(f)
|
|
134
|
-
|
|
135
|
-
return decorator
|
waveorder/cli/reconstruct.py
CHANGED
|
@@ -13,25 +13,19 @@ from waveorder.cli.parsing import (
|
|
|
13
13
|
input_position_dirpaths,
|
|
14
14
|
output_dirpath,
|
|
15
15
|
processes_option,
|
|
16
|
-
ram_multiplier,
|
|
17
|
-
unique_id,
|
|
18
16
|
)
|
|
19
17
|
|
|
20
18
|
|
|
21
|
-
@click.command()
|
|
19
|
+
@click.command("reconstruct")
|
|
22
20
|
@input_position_dirpaths()
|
|
23
21
|
@config_filepath()
|
|
24
22
|
@output_dirpath()
|
|
25
23
|
@processes_option(default=1)
|
|
26
|
-
|
|
27
|
-
@unique_id()
|
|
28
|
-
def reconstruct(
|
|
24
|
+
def _reconstruct_cli(
|
|
29
25
|
input_position_dirpaths,
|
|
30
26
|
config_filepath,
|
|
31
27
|
output_dirpath,
|
|
32
28
|
num_processes,
|
|
33
|
-
ram_multiplier,
|
|
34
|
-
unique_id,
|
|
35
29
|
):
|
|
36
30
|
"""
|
|
37
31
|
Reconstruct a dataset using a configuration file. This is a
|
|
@@ -67,6 +61,4 @@ def reconstruct(
|
|
|
67
61
|
config_filepath,
|
|
68
62
|
output_dirpath,
|
|
69
63
|
num_processes,
|
|
70
|
-
ram_multiplier,
|
|
71
|
-
unique_id,
|
|
72
64
|
)
|
waveorder/cli/utils.py
CHANGED
|
@@ -103,3 +103,27 @@ def apply_inverse_to_zyx_and_save(
|
|
|
103
103
|
t_idx, output_channel_indices
|
|
104
104
|
] = reconstruction_czyx
|
|
105
105
|
click.echo(f"Finished Writing.. t={t_idx}")
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def estimate_resources(shape, settings, num_processes):
|
|
109
|
+
T, C, Z, Y, X = shape
|
|
110
|
+
|
|
111
|
+
gb_ram_per_cpu = 0
|
|
112
|
+
gb_per_element = 4 / 2**30 # bytes_per_float32 / bytes_per_gb
|
|
113
|
+
voxel_resource_multiplier = 4
|
|
114
|
+
fourier_resource_multiplier = 32
|
|
115
|
+
input_memory = Z * Y * X * gb_per_element
|
|
116
|
+
|
|
117
|
+
if settings.birefringence is not None:
|
|
118
|
+
gb_ram_per_cpu += input_memory * voxel_resource_multiplier
|
|
119
|
+
if settings.phase is not None:
|
|
120
|
+
gb_ram_per_cpu += input_memory * fourier_resource_multiplier
|
|
121
|
+
if settings.fluorescence is not None:
|
|
122
|
+
gb_ram_per_cpu += input_memory * fourier_resource_multiplier
|
|
123
|
+
ram_multiplier = 1
|
|
124
|
+
gb_ram_per_cpu = np.ceil(
|
|
125
|
+
np.max([1, ram_multiplier * gb_ram_per_cpu])
|
|
126
|
+
).astype(int)
|
|
127
|
+
num_cpus = np.min([32, num_processes])
|
|
128
|
+
|
|
129
|
+
return num_cpus, gb_ram_per_cpu
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: waveorder
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.0a1
|
|
4
4
|
Summary: Wave-optical simulations and deconvolution of optical properties
|
|
5
5
|
Author-email: CZ Biohub SF <compmicro@czbiohub.org>
|
|
6
6
|
Maintainer-email: Talon Chandler <talon.chandler@czbiohub.org>, Shalin Mehta <shalin.mehta@czbiohub.org>
|
|
@@ -66,7 +66,6 @@ Requires-Dist: pyqtgraph>=0.12.3
|
|
|
66
66
|
Requires-Dist: pydantic
|
|
67
67
|
Requires-Dist: pywavelets>=1.1.1
|
|
68
68
|
Requires-Dist: scipy>=1.3.0
|
|
69
|
-
Requires-Dist: submitit
|
|
70
69
|
Requires-Dist: torch>=2.4.1
|
|
71
70
|
Requires-Dist: qtpy
|
|
72
71
|
Requires-Dist: wget>=3.2
|
|
@@ -90,7 +90,7 @@ tests/acq_tests/test_acq.py,sha256=J_WNuCrgsCWpHteDwbQXMya3D7uRNUvdS8owSZMTcVA,5
|
|
|
90
90
|
tests/calibration_tests/test_calibration.py,sha256=fsrEVXFANY4HGLB_Xs3kx0WZf114yk2umnZUCELFbVw,84
|
|
91
91
|
tests/cli_tests/test_cli.py,sha256=YCRH4fVdfZS2Nm0y5wknvvCiZVXxVsjp9tj-m9jB5WQ,220
|
|
92
92
|
tests/cli_tests/test_compute_tf.py,sha256=2uzC-o4_3at-m3r2q-MnvdzBWIK376gRk1AjSmXaCQM,5096
|
|
93
|
-
tests/cli_tests/test_reconstruct.py,sha256=
|
|
93
|
+
tests/cli_tests/test_reconstruct.py,sha256=s-l6V7_jI1YiHdEPYicTA9dEwJXRBclinkV2u2032Hw,7864
|
|
94
94
|
tests/cli_tests/test_settings.py,sha256=CiotIunU97AswrCPy87Pb4TWVkYMl2-_7hwvM90gcHI,3978
|
|
95
95
|
tests/mmcore_tests/test_core_func.py,sha256=X6bksIn39Y42UYawL9owRey5TtQ5TQgd8nDvaBR62g8,6029
|
|
96
96
|
tests/models/test_inplane_oriented_thick_pol3D.py,sha256=v0AKTOwXzvv4s4Atne1XOm4Ex-oqWYMBQfILXMdJGKY,1189
|
|
@@ -103,7 +103,7 @@ tests/util_tests/test_overlays.py,sha256=LH11T3Kj1U209agdLA_rtdD0j7Nzxv6SYvxHA0Y
|
|
|
103
103
|
tests/widget_tests/test_dock_widget.py,sha256=gxLVvt2xeh41kKv1FrqHTdwOytSwXD3uBqvv2cZKK3Q,307
|
|
104
104
|
tests/widget_tests/test_sample_contributions.py,sha256=Vy8zyx5EE5igV2506r53kJ_K3CLChjf7eW612pDP9Zg,179
|
|
105
105
|
waveorder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
106
|
-
waveorder/_version.py,sha256=
|
|
106
|
+
waveorder/_version.py,sha256=Dwkg711FkOHOW-hcrSC74e5Z9-Hd2zgSMqBDt88WsKw,519
|
|
107
107
|
waveorder/background_estimator.py,sha256=GFy3N0qqp5M6JVZBbIUvTYhSin8Njg7zA2WN69pKLAE,12398
|
|
108
108
|
waveorder/correction.py,sha256=uAWDKXq-FYwi1obxxWq0A-suNVf1cvqUnPsDC-LIlsM,3460
|
|
109
109
|
waveorder/filter.py,sha256=BSNYTMYy-HrqtupcXMm9OzWPMlX_NF7KSNjeN0-0ghQ,7350
|
|
@@ -118,24 +118,24 @@ waveorder/waveorder_reconstructor.py,sha256=-MluWmnZnCZm7Xu-8V8QWX9ma0_5oAZO2Xly
|
|
|
118
118
|
waveorder/waveorder_simulator.py,sha256=uRRX_wcWzJzlVcfToLpIlh4e8Xt9NjTvdonyGEf2Z1c,45805
|
|
119
119
|
waveorder/acq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
120
120
|
waveorder/acq/acq_functions.py,sha256=4GJCkxncFunsRbLesf1LErY7CaA26dMh2goVVUr72y0,5128
|
|
121
|
-
waveorder/acq/acquisition_workers.py,sha256=
|
|
121
|
+
waveorder/acq/acquisition_workers.py,sha256=fUpvv5j3JvVSu2_NUTOVPcFYlIvUciQ1UIo79wQqyPw,22757
|
|
122
122
|
waveorder/calib/Calibration.py,sha256=Fl6zQOJg4V6nKtbAlNL7s9kslmrxk6q-LAueh59F1bA,52007
|
|
123
123
|
waveorder/calib/Optimization.py,sha256=uBQRvZ3tsG52pOSwnRj3Lduf_wVTTYfcjegAZsN58UE,13909
|
|
124
124
|
waveorder/calib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
125
|
-
waveorder/calib/calibration_workers.py,sha256=
|
|
125
|
+
waveorder/calib/calibration_workers.py,sha256=TRxM_tO6I5Arg0ATkyWwSkUwyH09Hv0I1GHRXbyz8II,15300
|
|
126
126
|
waveorder/cli/apply_inverse_models.py,sha256=KyrnsfBI7LDTM9DaBGKnd3D2yrbEHIWUZgwG2rYNz1Y,7866
|
|
127
|
-
waveorder/cli/apply_inverse_transfer_function.py,sha256=
|
|
128
|
-
waveorder/cli/compute_transfer_function.py,sha256=
|
|
127
|
+
waveorder/cli/apply_inverse_transfer_function.py,sha256=gSg8PPbltKd5UTEo-r1bs_8vGqmCYFbJNJyff5ylbE8,12436
|
|
128
|
+
waveorder/cli/compute_transfer_function.py,sha256=_7drZUdLAE3pug119UYiijLKLhY8B3f791-UhM_yqB0,10079
|
|
129
129
|
waveorder/cli/gui_widget.py,sha256=VXVaack2t7iUuWOI5gvlxhfkLVp50eBRCdsoJT_ouU4,1245
|
|
130
|
-
waveorder/cli/jobs_mgmt.py,sha256=
|
|
131
|
-
waveorder/cli/main.py,sha256=
|
|
132
|
-
waveorder/cli/monitor.py,sha256=
|
|
130
|
+
waveorder/cli/jobs_mgmt.py,sha256=aP9r3S3CaDOuBX9h4bfwdcL_2MFQbQtwveAuO8i0GRQ,8091
|
|
131
|
+
waveorder/cli/main.py,sha256=uW18kwZOpYbgUKfGXexIF3LITxkUJeRMHnTmAwAPWjc,942
|
|
132
|
+
waveorder/cli/monitor.py,sha256=XBhqyd7dxnXrfca23rm0oAILEnx8lEVPsS2oSfmt8kw,4757
|
|
133
133
|
waveorder/cli/option_eat_all.py,sha256=GJgI4owf59IhZTtQiLsUy19WQJLJDXB-Gg7WIf5aREw,1823
|
|
134
|
-
waveorder/cli/parsing.py,sha256=
|
|
134
|
+
waveorder/cli/parsing.py,sha256=t-Hjxj4S1u4xjJ_bhVEabMpNj6YCulWfpfXgIVs_SEQ,3185
|
|
135
135
|
waveorder/cli/printing.py,sha256=rfGeONEsQT9AJnFY2VDCmi-1E62xdqwrwpJYBT_hFWg,237
|
|
136
|
-
waveorder/cli/reconstruct.py,sha256=
|
|
136
|
+
waveorder/cli/reconstruct.py,sha256=HzTbaSnn4O6txHgn18xqczlaGwFV5cdZReWgDC4TiiI,1749
|
|
137
137
|
waveorder/cli/settings.py,sha256=nP56MHicHq78r_QFD5sehhGCM1fpw-kRNLliJLmaLKY,6356
|
|
138
|
-
waveorder/cli/utils.py,sha256=
|
|
138
|
+
waveorder/cli/utils.py,sha256=0VvtXyBJV-2K8_CxFkOveTRloM7DANGazMpsFH9e4e8,4215
|
|
139
139
|
waveorder/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
140
140
|
waveorder/io/_reader.py,sha256=l17s_-1aARCFn76VIpDljoOIL088uPx3A1mTl3T5l9o,1630
|
|
141
141
|
waveorder/io/core_functions.py,sha256=g4HrkfcQinEhCPdt0FtRSXRXUjRL1ZQe5g0sClnjVZA,6553
|
|
@@ -162,9 +162,9 @@ waveorder/visuals/jupyter_visuals.py,sha256=6kxICjEtP1qc1EuETc_NJ6Y4A7nVaC-bP3wl
|
|
|
162
162
|
waveorder/visuals/matplotlib_visuals.py,sha256=v1zi0ZlXEV5CcpNzTWL0vDJ2Md2-RSHnc3rAB61wimg,10915
|
|
163
163
|
waveorder/visuals/napari_visuals.py,sha256=jgyKRlWqJv1PvCRWfpgqRUv6rwIsI4AXQGLL5IftPnM,2352
|
|
164
164
|
waveorder/visuals/utils.py,sha256=QC5WSc2yzPMjk66IjA39iNFgO_0It6evma201hH8Lg4,1001
|
|
165
|
-
waveorder-3.0.
|
|
166
|
-
waveorder-3.0.
|
|
167
|
-
waveorder-3.0.
|
|
168
|
-
waveorder-3.0.
|
|
169
|
-
waveorder-3.0.
|
|
170
|
-
waveorder-3.0.
|
|
165
|
+
waveorder-3.0.0a1.dist-info/licenses/LICENSE,sha256=v_wJE3YLyTOjHj0kgPB9hP9YDieI0WMw7XjOgTmIr2c,1509
|
|
166
|
+
waveorder-3.0.0a1.dist-info/METADATA,sha256=1ZSNUVKngj2gilDIS9nHbsg6_C73mCv9vRt3nb69Ucs,13886
|
|
167
|
+
waveorder-3.0.0a1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
168
|
+
waveorder-3.0.0a1.dist-info/entry_points.txt,sha256=cOCI4v8cdinVJiyAMlYZtxK6GCS4GF6Qpk1hTsgW18Y,106
|
|
169
|
+
waveorder-3.0.0a1.dist-info/top_level.txt,sha256=WoIUbYCz7Jx3u1TO83s8nOw0wyO5HbWJiffuGvlY-Sk,21
|
|
170
|
+
waveorder-3.0.0a1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|