octopi 1.0__py3-none-any.whl → 1.2.0__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.

Potentially problematic release.


This version of octopi might be problematic. Click here for more details.

Files changed (48) hide show
  1. octopi/__init__.py +1 -0
  2. octopi/datasets/cached_datset.py +1 -1
  3. octopi/datasets/generators.py +1 -1
  4. octopi/datasets/io.py +200 -0
  5. octopi/datasets/multi_config_generator.py +1 -1
  6. octopi/entry_points/common.py +9 -9
  7. octopi/entry_points/create_slurm_submission.py +16 -8
  8. octopi/entry_points/run_create_targets.py +6 -6
  9. octopi/entry_points/run_evaluate.py +4 -3
  10. octopi/entry_points/run_extract_mb_picks.py +22 -45
  11. octopi/entry_points/run_localize.py +37 -54
  12. octopi/entry_points/run_optuna.py +7 -7
  13. octopi/entry_points/run_segment_predict.py +4 -4
  14. octopi/entry_points/run_train.py +7 -8
  15. octopi/extract/localize.py +19 -12
  16. octopi/extract/membranebound_extract.py +11 -10
  17. octopi/extract/midpoint_extract.py +3 -3
  18. octopi/main.py +1 -1
  19. octopi/models/common.py +1 -1
  20. octopi/processing/create_targets_from_picks.py +11 -5
  21. octopi/processing/downsample.py +6 -10
  22. octopi/processing/evaluate.py +24 -11
  23. octopi/processing/importers.py +4 -4
  24. octopi/pytorch/hyper_search.py +2 -3
  25. octopi/pytorch/model_search_submitter.py +15 -15
  26. octopi/pytorch/segmentation.py +147 -192
  27. octopi/pytorch/segmentation_multigpu.py +162 -0
  28. octopi/pytorch/trainer.py +9 -3
  29. octopi/utils/__init__.py +0 -0
  30. octopi/utils/config.py +57 -0
  31. octopi/utils/io.py +128 -0
  32. octopi/{utils.py → utils/parsers.py} +10 -84
  33. octopi/{stopping_criteria.py → utils/stopping_criteria.py} +3 -3
  34. octopi/{visualization_tools.py → utils/visualization_tools.py} +4 -4
  35. octopi/workflows.py +236 -0
  36. octopi-1.2.0.dist-info/METADATA +120 -0
  37. octopi-1.2.0.dist-info/RECORD +62 -0
  38. {octopi-1.0.dist-info → octopi-1.2.0.dist-info}/WHEEL +1 -1
  39. octopi-1.2.0.dist-info/entry_points.txt +3 -0
  40. {octopi-1.0.dist-info → octopi-1.2.0.dist-info/licenses}/LICENSE +3 -3
  41. octopi/io.py +0 -457
  42. octopi/processing/my_metrics.py +0 -26
  43. octopi/processing/writers.py +0 -102
  44. octopi-1.0.dist-info/METADATA +0 -209
  45. octopi-1.0.dist-info/RECORD +0 -59
  46. octopi-1.0.dist-info/entry_points.txt +0 -4
  47. /octopi/{losses.py → utils/losses.py} +0 -0
  48. /octopi/{submit_slurm.py → utils/submit_slurm.py} +0 -0
@@ -1,26 +0,0 @@
1
- from monai.utils import (MetricReduction, look_up_option)
2
- from monai.metrics import confusion_matrix as monai_cm
3
- from typing import Any
4
- import torch, mlflow
5
-
6
- def my_log_param(params_dict, client = None, trial_run_id = None):
7
-
8
- if client is not None and trial_run_id is not None:
9
- # client.log_params(run_id=trial_run_id, params=params_dict)
10
- for key, value in params_dict.items():
11
- client.log_param(run_id=trial_run_id, key=key, value=value)
12
- else:
13
- mlflow.log_params(params_dict)
14
-
15
-
16
- ##############################################################################################################################
17
-
18
- def my_log_metric(metric_name, val, curr_step, client = None, trial_run_id = None):
19
-
20
- if client is not None and trial_run_id is not None:
21
- client.log_metric(run_id = trial_run_id,
22
- key = metric_name,
23
- value = val,
24
- step = curr_step)
25
- else:
26
- mlflow.log_metric(metric_name, val, step = curr_step)
@@ -1,102 +0,0 @@
1
- # This code is adapted from the copick-utils project,
2
- # originally available at: https://github.com/copick/copick-utils/blob/main/src/copick_utils/writers/write.py
3
- # Licensed under the MIT License.
4
-
5
- # Copyright (c) 2023 The copick-utils authors
6
-
7
- from typing import Any, Dict, List
8
- import numpy as np
9
-
10
- def tomogram(
11
- run,
12
- input_volume,
13
- voxel_size=10,
14
- algorithm="wbp"
15
- ):
16
- """
17
- Writes a volumetric tomogram into an OME-Zarr format within a Copick directory.
18
-
19
- Parameters:
20
- -----------
21
- run : copick.Run
22
- The current Copick run object.
23
- input_volume : np.ndarray
24
- The volumetric tomogram data to be written.
25
- voxel_size : float, optional
26
- The size of the voxels in physical units. Default is 10.
27
- algorithm : str, optional
28
- The tomographic reconstruction algorithm to use. Default is 'wbp'.
29
-
30
- Returns:
31
- --------
32
- copick.Tomogram
33
- The created or modified tomogram object.
34
- """
35
-
36
- # Retrieve or create voxel spacing
37
- voxel_spacing = run.get_voxel_spacing(voxel_size)
38
- if voxel_spacing is None:
39
- voxel_spacing = run.new_voxel_spacing(voxel_size=voxel_size)
40
-
41
- # Check if We Need to Create a New Tomogram for Given Algorithm
42
- tomogram = voxel_spacing.get_tomogram(algorithm)
43
- if tomogram is None:
44
- tomogram = voxel_spacing.new_tomogram(tomo_type=algorithm)
45
-
46
- # Write the tomogram data
47
- tomogram.from_numpy(input_volume)
48
-
49
-
50
- def segmentation(
51
- run,
52
- segmentation_volume,
53
- user_id,
54
- name="segmentation",
55
- session_id="0",
56
- voxel_size=10,
57
- multilabel=True
58
- ):
59
- """
60
- Writes a segmentation into an OME-Zarr format within a Copick directory.
61
-
62
- Parameters:
63
- -----------
64
- run : copick.Run
65
- The current Copick run object.
66
- segmentation_volume : np.ndarray
67
- The segmentation data to be written.
68
- user_id : str
69
- The ID of the user creating the segmentation.
70
- name : str, optional
71
- The name of the segmentation dataset to be created or modified. Default is 'segmentation'.
72
- session_id : str, optional
73
- The session ID for this segmentation. Default is '0'.
74
- voxel_size : float, optional
75
- The size of the voxels in physical units. Default is 10.
76
- multilabel : bool, optional
77
- Whether the segmentation is a multilabel segmentation. Default is True.
78
-
79
- Returns:
80
- --------
81
- copick.Segmentation
82
- The created or modified segmentation object.
83
- """
84
-
85
- # Retrieve or create a segmentation
86
- segmentations = run.get_segmentations(name=name, user_id=user_id, session_id=session_id)
87
-
88
- # If no segmentation exists or no segmentation at the given voxel size, create a new one
89
- if len(segmentations) == 0 or any(seg.voxel_size != voxel_size for seg in segmentations):
90
- segmentation = run.new_segmentation(
91
- voxel_size=voxel_size,
92
- name=name,
93
- session_id=session_id,
94
- is_multilabel=multilabel,
95
- user_id=user_id
96
- )
97
- else:
98
- # Overwrite the current segmentation at the specified voxel size if it exists
99
- segmentation = next(seg for seg in segmentations if seg.voxel_size == voxel_size)
100
-
101
- # Write the segmentation data
102
- segmentation.from_numpy(segmentation_volume, dtype=np.uint8)
@@ -1,209 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: octopi
3
- Version: 1.0
4
- Summary: Model architecture exploration for cryoET particle picking
5
- License: MIT
6
- Author: Jonathan Schwartz
7
- Requires-Python: >=3.9,<4.0
8
- Classifier: License :: OSI Approved :: MIT License
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: Programming Language :: Python :: 3.9
11
- Classifier: Programming Language :: Python :: 3.10
12
- Classifier: Programming Language :: Python :: 3.11
13
- Classifier: Programming Language :: Python :: 3.12
14
- Classifier: Programming Language :: Python :: 3.13
15
- Requires-Dist: copick
16
- Requires-Dist: ipywidgets
17
- Requires-Dist: kaleido
18
- Requires-Dist: matplotlib
19
- Requires-Dist: mlflow (==2.17.0)
20
- Requires-Dist: monai-weekly (==1.5.dev2448)
21
- Requires-Dist: mrcfile
22
- Requires-Dist: multiprocess
23
- Requires-Dist: nibabel
24
- Requires-Dist: optuna (==4.0.0)
25
- Requires-Dist: optuna-integration[botorch,pytorch-lightning]
26
- Requires-Dist: pandas
27
- Requires-Dist: plotly
28
- Requires-Dist: python-dotenv
29
- Requires-Dist: pytorch-lightning (==2.4.0)
30
- Requires-Dist: requests (>=2.25.1,<3.0.0)
31
- Requires-Dist: seaborn
32
- Requires-Dist: torch-ema
33
- Requires-Dist: tqdm
34
- Description-Content-Type: text/markdown
35
-
36
- # OCTOPI 🐙🐙🐙
37
- **O**bject dete**CT**ion **O**f **P**rote**I**ns. A deep learning framework for Cryo-ET 3D particle picking with autonomous model exploration capabilities.
38
-
39
- ## 🚀 Introduction
40
-
41
- octopi addresses a critical bottleneck in cryo-electron tomography (cryo-ET) research: the efficient identification and extraction of proteins within complex cellular environments. As advances in cryo-ET enable the collection of thousands of tomograms, the need for automated, accurate particle picking has become increasingly urgent.
42
-
43
- Our deep learning-based pipeline streamlines the training and execution of 3D autoencoder models specifically designed for cryo-ET particle picking. Built on [copick](https://github.com/copick/copick), a storage-agnostic API, octopi seamlessly accesses tomograms and segmentations across local and remote environments.
44
-
45
- ## 🧩 Features
46
-
47
- octopi offers a modular, deep learning-driven pipeline for:
48
- * Training and evaluating custom 3D U-Net models for particle segmentation.
49
- * Automatically exploring model architectures using Bayesian optimization via Optuna.
50
- * Performing inference for both semantic segmentation and particle localization.
51
-
52
- octopi empowers researchers to navigate the dense, intricate landscapes of cryo-ET datasets with unprecedented precision and efficiency without manual trial and error.
53
-
54
- ## Getting Started
55
- ### Installation
56
-
57
- *Octopi* is available on PyPI.
58
- ```
59
- pip install octopi
60
- ```
61
-
62
- ## 📚 Usage
63
-
64
- octopi provides a clean, scriptable command-line interface. Run the following command to view all available subcommands:
65
- ```
66
- octopi --help
67
- ```
68
- Each subcommand supports its own --help flag for detailed usage. To see practical examples of how to interface directly with the octopi API, explore the notebooks/ folder.
69
-
70
- If you're running octopi on an HPC cluster, several SLURM-compatible submission commands are available. You can view them by running:
71
- ```
72
- octopi-slurm --help
73
- ```
74
- This provides utilities for submitting training, inference, and localization jobs in SLURM-based environments.
75
-
76
- ### 📥 Data Import & Preprocessing
77
-
78
- To train or run inference with octopi, your tomograms must be organized inside a CoPick project. octopi supports two primary methods for data ingestion, both of which include optional Fourier cropping to reduce resolution and accelerate downstream processing.
79
-
80
- If your tomograms are already processed and stored locally in .mrc format (e.g., from Warp, IMOD, or AreTomo), you can import them into a new or existing CoPick project using:
81
-
82
- ```
83
- octopi import-mrc-volumes \
84
- --input-folder /path/to/mrc/files --config /path/to/config.json \
85
- --target-tomo-type denoised --input-voxel-size --output-voxel-size 10
86
- ```
87
-
88
- octopi also can process tomograms that are hosted on the data portal. Users can download tomograms onto their own remote machine especially if they would like to downsample the tomograms to a lower resolution for speed and memory. You can download and process the tomograms using:
89
- ```
90
- octopi download-dataportal \
91
- --config /path/to/config.json --datasetID 10445 --overlay-path path/to/saved/zarrs \
92
- --input-voxel-size 5 --output-voxel-size 10 \
93
- --dataportal-name wbp --target-tomotype wbp
94
- ```
95
-
96
- ### 📁 Training Labels Preparation
97
-
98
- Use `octopi create-targets` to create semantic masks for proteins of interest using annotation metadata. In this example lets generate picks segmentations for dataset 10439 from the CZ cryoET Dataportal (only need to run this step once).
99
- ```
100
- octopi create-targets \
101
- --config config.json \
102
- --target apoferritin --target beta-galactosidase,slabpick,1 \
103
- --target ribosome,pytom,0 --target virus-like-particle,pytom,0 \
104
- --seg-target membrane \
105
- --tomo-alg wbp --voxel-size 10 \
106
- --target-session-id 1 --target-segmentation-name remotetargets \
107
- --target-user-id train-octopi
108
- ```
109
-
110
- ### 🧠 Training a single 3D U-Net model
111
- Train a 3D U-Net model on the prepared datasets using the prepared target segmentations. We can use tomograms derived from multiple copick projects.
112
- ```
113
- octopi train-model \
114
- --config experiment,config1.json \
115
- --config simulation,config2.json \
116
- --voxel-size 10 --tomo-alg wbp --Nclass 8 \
117
- --tomo-batch-size 50 --num-epochs 100 --val-interval 10 \
118
- --target-info remotetargets,train-octopi,1
119
- ```
120
- Outputs will include model weights (.pth), logs, and training metrics.
121
-
122
- ### 🔍 Model exploration with Optuna
123
-
124
- octopi🐙 supports automatic neural architecture search using Optuna, enabling efficient discovery of optimal 3D U-Net configurations through Bayesian optimization. This allows users to maximize segmentation accuracy without manual tuning.
125
-
126
- To launch a model exploration job:
127
- ```
128
- octopi model-explore \
129
- --config experiment,/mnt/dataportal/ml_challenge/config.json \
130
- --config simulation,/mnt/dataportal/synthetic_ml_challenge/config.json \
131
- --voxel-size 10 --tomo-alg wbp --Nclass 8 \
132
- --model-save-path train_results
133
- ```
134
- Each trial evaluates a different architecture and logs:
135
- • Segmentation performance metrics
136
- • Model weights and configs
137
- • Training curves and validation loss
138
-
139
- 🔬 Trials are automatically tracked with MLflow and saved under the specified `--model-save-path`.
140
-
141
- #### Optuna Dashboard
142
-
143
- To quickly asses the exploration results and observe which trials results the best architectures, Optuna provides a dashboard that summarizes all the information on a dashboard. The instrucutions to access the dashboard are available here - https://optuna-dashboard.readthedocs.io/en/latest/getting-started.html, it is recommended to use either VS-Code extension or CLI.
144
-
145
- #### 📊 MLflow experiment tracking
146
-
147
- To use CZI cloud MLflow tracker, add a `.env` in the root directory like below. You can get a CZI MLflow access token from [here](https://mlflow.cw.use4-prod.si.czi.technology/api/2.0/mlflow/users/access-token) (note that a new token will be generated everytime you open this site).
148
- ```
149
- MLFLOW_TRACKING_USERNAME = <Your_CZ_email>
150
- MLFLOW_TRACKING_PASSWORD = <Your_mlflow_access_token>
151
- ```
152
-
153
- octopi supports MLflow for logging and visualizing model training and hyperparameter search results, including:
154
- • Training loss/validation metrics over time
155
- • Model hyperparameters and architecture details
156
- • Trial comparison (e.g., best performing model)
157
-
158
- You can use either a local MLflow instance, a remote (HPC) instance, or the CZI cloud server:
159
-
160
- #### 🧪 Local MLflow Dashboard
161
-
162
- To inspect results locally: `mlflow ui` and open http://localhost:5000 in your browser.
163
-
164
- #### 🖥️ HPC Cluster MLflow Access (Remote via SSH tunnel)
165
-
166
- If running octopi on a remote cluster (e.g., Biohub Bruno), forward the MLflow port.
167
- On your local machine:
168
- `ssh -L 5000:localhost:5000 remote_username@remote_host` (in the case of Bruno the remote would be `login01.czbiohub.org`).
169
-
170
- Then on the remote terminal (login node): ` mlflow ui --host 0.0.0.0 --port 5000` to launch the MLFlow dashboard on a local borwser.
171
-
172
- #### ☁️ CZI coreweave cluser
173
-
174
- For the CZI coreweave cluser, MLflow is already hosted. Go to the CZI [mlflow server](https://mlflow.cw.use4-prod.si.czi.technology/).
175
-
176
- 🔐 A .env file is required to authenticate (see Getting Started section).
177
- 📁 Be sure to register your project name in MLflow before launching runs.
178
-
179
- ### 🔮 Segmentation
180
- Generate segmentation prediction masks for tomograms in a given copick project.
181
- ```
182
- octopi inference \
183
- --config config.json \
184
- --seg-info predict,unet,1 \
185
- --model-config train_results/best_model_config.yaml \
186
- --model-weights train_results/best_model.pth \
187
- --voxel-size 10 --tomo-alg wbp --tomo-batch-size 25
188
- ```
189
- Output masks will be saved to the corresponding copick project under the `seg-info` input.
190
-
191
- ### 📍 Localization
192
- Convert the segmentation masks into particle coordinates.
193
- ```
194
- octopi localize \
195
- --config config.json \
196
- --pick-session-id 1 --pick-user-id unet \
197
- --seg-info predict,unet,1
198
- ```
199
-
200
- ## Contributing
201
-
202
- This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to opensource@chanzuckerberg.com.
203
-
204
- ## Reporting Security Issues
205
-
206
- Please note: If you believe you have found a security issue, please responsibly disclose by contacting us at security@chanzuckerberg.com.
207
-
208
-
209
-
@@ -1,59 +0,0 @@
1
- octopi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- octopi/datasets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- octopi/datasets/augment.py,sha256=k7UXQzidPANaPuLoBzer_ZHc4_vF-kKTOyZisEnAbNw,3203
4
- octopi/datasets/cached_datset.py,sha256=eQgKjQ9Kz4RF5rs2saFE25p-YfspA24tq3-6ugukbRA,3909
5
- octopi/datasets/dataset.py,sha256=9C3AuD83FMswj4MYLFn5XPqvAP1a7MQSG7UNiStg090,511
6
- octopi/datasets/generators.py,sha256=aqsIhipkG6bBzwpUlvP_N5m2Je5vs4Vq7gQN1z2uKPc,18874
7
- octopi/datasets/mixup.py,sha256=BJUAmM7ItZWFChs8glnd8RNSXR5qGW7DHscbcVc3TsU,1575
8
- octopi/datasets/multi_config_generator.py,sha256=SIYqz3Xps4gyWgUo02W1KbObM4ye14dIHJi25XlIIRc,10805
9
- octopi/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- octopi/entry_points/common.py,sha256=lh2mPNkhMtqMoSqPPajQ-saiGXiOR-vMiFuuolJWWvI,5332
11
- octopi/entry_points/create_slurm_submission.py,sha256=h3pllxmPnG6QUujfop4CNE8xYNsfWrAEkavRCi9UGzg,8720
12
- octopi/entry_points/run_create_targets.py,sha256=IacDeL9k3sCRbeVuyn32IffjrdQe31VAbS4CxTWpHFk,11226
13
- octopi/entry_points/run_evaluate.py,sha256=I90kP_GOtAO7zbuEY9ptZ8Y-g1wZa41N9a2ZGbijEcs,2826
14
- octopi/entry_points/run_extract_mb_picks.py,sha256=iULXtjoL06SApeychQGty5lWAINeNt_1D-zGeJIXT6k,5583
15
- octopi/entry_points/run_extract_midpoint.py,sha256=O6GdkSD7oXIpSVqizOc6PHhv9nunz3j0RucmYQ2yryM,5742
16
- octopi/entry_points/run_localize.py,sha256=0TKaZD7Uk8ud2ZIlcsB9-6S6vPDlOKIdtCxe_sWnzY4,8678
17
- octopi/entry_points/run_optuna.py,sha256=LQXQ6W3v8MhJ9EoKbtFc84Muy3ofjzo-0SyUQaMAaMs,5743
18
- octopi/entry_points/run_segment_predict.py,sha256=46CfxDWxbKAZT8o2xr4JiYAwLxVpxXLwGylZU8WXgMc,5442
19
- octopi/entry_points/run_train.py,sha256=zdeZxtwK0fJytex9TzZBXxpQxF8b3ljpWeYdBsuOR8k,8094
20
- octopi/extract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- octopi/extract/localize.py,sha256=jvVDl2b6cQZyuxUfLaB4WgMLY53ENCKq2K2CVw1FYUU,9515
22
- octopi/extract/membranebound_extract.py,sha256=VdlsiytoaKBk4wdhORJU8yRSOARFN2zvnF6PZpJkGmo,11208
23
- octopi/extract/midpoint_extract.py,sha256=W8sVIAweqkQcF18ie7tvvvOeBzRTBdH95FzPtjMcWjc,7033
24
- octopi/io.py,sha256=c9ZLhFzhoXx2XJ3GmQM-Dx2CUkCOfHj-HWOq3QQvzJU,19558
25
- octopi/losses.py,sha256=fs9yR80Hs-hL07WgVMkRy5N81vzP5m9XBCvzO76bIPU,3097
26
- octopi/main.py,sha256=03CqyB9iKCxpek1a2A-vMsIsEjWjW1Q9XbDqqDnWOW0,4866
27
- octopi/models/AttentionUnet.py,sha256=r185aXRtfXhN-n8FxA-Sjz18nqpxHH_2t2uadrH-Mgs,1991
28
- octopi/models/MedNeXt.py,sha256=9q0FsyrqTx211hCbDv0Lm2XflzXL_bGA4-76BscziGk,4875
29
- octopi/models/ModelTemplate.py,sha256=X80EOXwSovCjmVb7x-0_JmRjHfDfLByDdd60MrgFTyw,1084
30
- octopi/models/SegResNet.py,sha256=1dK8dy_7hHHKYZLsTYafl__7MxQOlWGbBqQWPGxHSXg,3609
31
- octopi/models/Unet.py,sha256=7RGT_nl7ogsNlS3Y3Qexe305Ym9NlK9CV0y45g2DEU4,2171
32
- octopi/models/UnetPlusPlus.py,sha256=fnV-SvJV8B432KJXQAtdwLy8Va6DJ4fRB_7a1mZiqTU,1529
33
- octopi/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- octopi/models/common.py,sha256=kXE0GcQSdfbiP0PDaJBkAJClBqTqCamP-2bHkbe0uBg,2307
35
- octopi/processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
- octopi/processing/create_targets_from_picks.py,sha256=D7JlPIaq3ClzCKvK-Z8F-eUpUbUd7zGysJ2Z0AYQzzE,4010
37
- octopi/processing/downsample.py,sha256=zlZAgrKiPEltFZCLYgcAcVVtoKb_qMzV_eUv1UaBy4k,5498
38
- octopi/processing/evaluate.py,sha256=0w1iqmD8EXRdce-ctSoEJu5lAwYk1CjL4Qd_dpZt7Yw,13364
39
- octopi/processing/importers.py,sha256=TBgPlleGGOW8tJJLArrAFWxzvxH1qE-id_PTLRscgEs,8876
40
- octopi/processing/my_metrics.py,sha256=7ZhCEiSYkqbSpoTntAkCrr7y83u6-jI8k8d3P9TlrQA,1040
41
- octopi/processing/segmentation_from_picks.py,sha256=jah1gAXEn09LIok1Cb8IeVN-fT3jktcVPfjbOFHkgg0,7089
42
- octopi/processing/writers.py,sha256=YB6-0mwJ9sc_eJ3G_WItcqlBjFOpggyNhoRswKOZA6Q,3301
43
- octopi/pytorch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- octopi/pytorch/hyper_search.py,sha256=xCJ_8qYaK80UMb2JrBvU31tEZ8-L7MBGBE9pb63-8a0,9431
45
- octopi/pytorch/model_search_submitter.py,sha256=2sgOrrQFdvvSrnfVgpt0uQmZ0H1MjudNyaDvLXSBSKY,11162
46
- octopi/pytorch/segmentation.py,sha256=hS9mUBAmHqTk7zB0lyCHerzir5IvTbXtOA7lRIOJk7w,13689
47
- octopi/pytorch/trainer.py,sha256=wP384rmpuXna1Ou3wksPXHGe2n3bZNfIUZWynbzLHGU,17549
48
- octopi/pytorch_lightning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- octopi/pytorch_lightning/optuna_pl_ddp.py,sha256=ynD5i81IP-awr6OD9GDurjrQK-5Kc079qPaukphTHnA,11924
50
- octopi/pytorch_lightning/train_pl.py,sha256=igOHzU_mUdZRQGhoOGW5vmxJcHFcw5fAPHfVCIZ0eG4,10220
51
- octopi/stopping_criteria.py,sha256=Fib1fiFqPQPLDxZQNUTgQInY8RWGNBzXkpqF_WJ2PSo,6112
52
- octopi/submit_slurm.py,sha256=cRbJTESbPFCt6Cq4Hat2uPOQKFYMPcQxuNs0jc1ygUA,1945
53
- octopi/utils.py,sha256=iezl5ui2E_Qs00_HS4uPPh008pdyY6IXI9euLfkUq4s,9008
54
- octopi/visualization_tools.py,sha256=80Kj8yX09LEXJe3QqeithhlwEdoz9wOYRk7T1RFRmw4,7368
55
- octopi-1.0.dist-info/LICENSE,sha256=zYaYdrEn2O4KTO8sLySIhHOKerzA69toCj2ywuvHT7Q,1816
56
- octopi-1.0.dist-info/METADATA,sha256=lOJwRTgwySLUtMLeaaTegM20fCxZMqtu73tVyMXhqS4,9483
57
- octopi-1.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
58
- octopi-1.0.dist-info/entry_points.txt,sha256=FnDGURPvbr2Hl7n0LPN-5jHtvrKA87MNvhCFO-BwAfg,87
59
- octopi-1.0.dist-info/RECORD,,
@@ -1,4 +0,0 @@
1
- [console_scripts]
2
- octopi=octopi.main:cli_main
3
- octopi-slurm=octopi.main:cli_slurm_main
4
-
File without changes
File without changes