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.
@@ -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 "submitted" in captured.out
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.0a0'
21
- __version_tuple__ = version_tuple = (3, 0, 0, 'a0')
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
- apply_inverse_transfer_function_cli,
23
+ _apply_inverse_transfer_function_cli,
24
24
  )
25
25
  from waveorder.cli.compute_transfer_function import (
26
- compute_transfer_function_cli,
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
- compute_transfer_function_cli(
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
- apply_inverse_transfer_function_cli(
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
- compute_transfer_function_cli(
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
- apply_inverse_transfer_function_cli(
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
- apply_inverse_transfer_function_cli,
18
+ _apply_inverse_transfer_function_cli,
19
19
  )
20
20
  from waveorder.cli.compute_transfer_function import (
21
- compute_transfer_function_cli,
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
- compute_transfer_function_cli(
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
- apply_inverse_transfer_function_cli(
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: int = 1,
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
- # Initialize torch num of threads and interoeration operations
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
- # Estimate resources
317
- with open_ome_zarr(input_position_dirpaths[0]) as input_dataset:
318
- T, C, Z, Y, X = input_dataset["0"].shape
319
-
320
- settings = utils.yaml_to_model(config_filepath, ReconstructionSettings)
321
- gb_ram_request = 0
322
- gb_per_element = 4 / 2**30 # bytes_per_float32 / bytes_per_gb
323
- voxel_resource_multiplier = 4
324
- fourier_resource_multiplier = 32
325
- input_memory = Z * Y * X * gb_per_element
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
- @ram_multiplier()
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 compute_tf(
284
+ def _compute_transfer_function_cli(
285
285
  input_position_dirpaths: list[Path],
286
286
  config_filepath: Path,
287
287
  output_dirpath: Path,
@@ -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: submitit.Job = SERVER_uIDsjobIDs[uID][jobEntry]["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 apply_inv_tf
4
- from waveorder.cli.compute_transfer_function import compute_tf
5
- from waveorder.cli.reconstruct import reconstruct
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(reconstruct)
27
- cli.add_command(compute_tf)
28
- cli.add_command(apply_inv_tf)
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
@@ -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
- @ram_multiplier()
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.0a0
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=XodkityoyO5TPpgdRTvIQwhTM4DXuVEARhISw4E7TrA,7865
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=Smvf3YFuHS_E4OS304doz1JEAtUfozZ6rzwX28UmgtU,519
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=CnDWI7ZDRVd43pbXWkHD4B1YYJ57jbuKO7a6QrlF6-M,22751
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=ae7BsTepG3DUav7zn6ndZ8x0JkPppeo-XVqjy4-iqBo,15296
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=ZllV0Azo0im25BUdx10MuE599frfe5MOLV847LSDBjg,15497
128
- waveorder/cli/compute_transfer_function.py,sha256=moFvKrQwKah4o7kuQtOcV3AB-grrR1ttbnq0Gs560kE,10047
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=Yowxh4CXfBfo5tr3n9418J3AdQhWW_Ltkf7p6ZpEF1k,8122
131
- waveorder/cli/main.py,sha256=YLvKW3tSXBHtf_UPt8qmqwGBBn9DYColLkPTjLiQzhU,826
132
- waveorder/cli/monitor.py,sha256=4xAZCHad3T3Vm4H6A6q1xQs9yUTe2QKAgOt6SkxhDOM,4748
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=IWTU8DEgja2sR4RE8KvJkcc-PiU7VeXvOlboSFG-SmQ,3762
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=lU9507K7l_S6sjiiBaN3mBQEEZ8i2XfeAtLKBLzsgSk,1875
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=x4Q1xiPKT-s1VkDEbe_leGjiVssLGr3TbJDK8QFN_VI,3393
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.0a0.dist-info/licenses/LICENSE,sha256=v_wJE3YLyTOjHj0kgPB9hP9YDieI0WMw7XjOgTmIr2c,1509
166
- waveorder-3.0.0a0.dist-info/METADATA,sha256=lOMFe0W1uaxBviiddvbPTke-9q3-vGzo2rBfMod-VoM,13910
167
- waveorder-3.0.0a0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
168
- waveorder-3.0.0a0.dist-info/entry_points.txt,sha256=cOCI4v8cdinVJiyAMlYZtxK6GCS4GF6Qpk1hTsgW18Y,106
169
- waveorder-3.0.0a0.dist-info/top_level.txt,sha256=WoIUbYCz7Jx3u1TO83s8nOw0wyO5HbWJiffuGvlY-Sk,21
170
- waveorder-3.0.0a0.dist-info/RECORD,,
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,,