pytme 0.2.2__cp311-cp311-macosx_14_0_arm64.whl → 0.2.4__cp311-cp311-macosx_14_0_arm64.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.
- {pytme-0.2.2.data → pytme-0.2.4.data}/scripts/match_template.py +97 -148
- {pytme-0.2.2.data → pytme-0.2.4.data}/scripts/postprocess.py +20 -29
- pytme-0.2.4.data/scripts/preprocess.py +148 -0
- {pytme-0.2.2.data → pytme-0.2.4.data}/scripts/preprocessor_gui.py +15 -23
- {pytme-0.2.2.dist-info → pytme-0.2.4.dist-info}/METADATA +11 -10
- pytme-0.2.4.dist-info/RECORD +119 -0
- {pytme-0.2.2.dist-info → pytme-0.2.4.dist-info}/WHEEL +1 -1
- {pytme-0.2.2.dist-info → pytme-0.2.4.dist-info}/top_level.txt +1 -0
- pytme-0.2.2.data/scripts/preprocess.py → scripts/eval.py +1 -1
- scripts/match_template.py +97 -148
- scripts/postprocess.py +20 -29
- scripts/preprocess.py +116 -61
- scripts/preprocessor_gui.py +15 -23
- tests/__init__.py +0 -0
- tests/data/.DS_Store +0 -0
- tests/data/Blurring/.DS_Store +0 -0
- tests/data/Blurring/blob_width18.npy +0 -0
- tests/data/Blurring/edgegaussian_sigma3.npy +0 -0
- tests/data/Blurring/gaussian_sigma2.npy +0 -0
- tests/data/Blurring/hamming_width6.npy +0 -0
- tests/data/Blurring/kaiserb_width18.npy +0 -0
- tests/data/Blurring/localgaussian_sigma0510.npy +0 -0
- tests/data/Blurring/mean_size5.npy +0 -0
- tests/data/Blurring/ntree_sigma0510.npy +0 -0
- tests/data/Blurring/rank_rank3.npy +0 -0
- tests/data/Maps/.DS_Store +0 -0
- tests/data/Maps/emd_8621.mrc.gz +0 -0
- tests/data/README.md +2 -0
- tests/data/Raw/.DS_Store +0 -0
- tests/data/Raw/em_map.map +0 -0
- tests/data/Structures/.DS_Store +0 -0
- tests/data/Structures/1pdj.cif +3339 -0
- tests/data/Structures/1pdj.pdb +1429 -0
- tests/data/Structures/5khe.cif +3685 -0
- tests/data/Structures/5khe.ent +2210 -0
- tests/data/Structures/5khe.pdb +2210 -0
- tests/data/Structures/5uz4.cif +70548 -0
- tests/preprocessing/__init__.py +0 -0
- tests/preprocessing/test_compose.py +76 -0
- tests/preprocessing/test_frequency_filters.py +178 -0
- tests/preprocessing/test_preprocessor.py +136 -0
- tests/preprocessing/test_utils.py +79 -0
- tests/test_analyzer.py +310 -0
- tests/test_backends.py +375 -0
- tests/test_density.py +508 -0
- tests/test_extensions.py +130 -0
- tests/test_matching_cli.py +283 -0
- tests/test_matching_data.py +162 -0
- tests/test_matching_exhaustive.py +162 -0
- tests/test_matching_memory.py +30 -0
- tests/test_matching_optimization.py +276 -0
- tests/test_matching_utils.py +326 -0
- tests/test_orientations.py +173 -0
- tests/test_packaging.py +95 -0
- tests/test_parser.py +33 -0
- tests/test_structure.py +243 -0
- tme/__init__.py +0 -1
- tme/__version__.py +1 -1
- tme/analyzer.py +9 -6
- tme/backends/__init__.py +1 -1
- tme/backends/_jax_utils.py +10 -8
- tme/backends/cupy_backend.py +2 -7
- tme/backends/jax_backend.py +35 -20
- tme/backends/npfftw_backend.py +3 -2
- tme/backends/pytorch_backend.py +10 -7
- tme/data/scattering_factors.pickle +0 -0
- tme/density.py +26 -12
- tme/extensions.cpython-311-darwin.so +0 -0
- tme/external/bindings.cpp +332 -0
- tme/matching_data.py +33 -24
- tme/matching_exhaustive.py +39 -20
- tme/matching_scores.py +5 -2
- tme/matching_utils.py +8 -2
- tme/orientations.py +26 -9
- tme/preprocessing/_utils.py +14 -14
- tme/preprocessing/composable_filter.py +5 -4
- tme/preprocessing/compose.py +4 -4
- tme/preprocessing/frequency_filters.py +32 -35
- tme/preprocessing/tilt_series.py +210 -148
- tme/preprocessor.py +24 -246
- tme/structure.py +14 -14
- pytme-0.2.2.dist-info/RECORD +0 -74
- tme/matching_memory.py +0 -383
- {pytme-0.2.2.data → pytme-0.2.4.data}/scripts/estimate_ram_usage.py +0 -0
- {pytme-0.2.2.dist-info → pytme-0.2.4.dist-info}/LICENSE +0 -0
- {pytme-0.2.2.dist-info → pytme-0.2.4.dist-info}/entry_points.txt +0 -0
@@ -132,14 +132,6 @@ def local_gaussian_filter(
|
|
132
132
|
)
|
133
133
|
|
134
134
|
|
135
|
-
def ntree(
|
136
|
-
template: NDArray,
|
137
|
-
sigma_range: Tuple[float, float],
|
138
|
-
**kwargs: dict,
|
139
|
-
) -> NDArray:
|
140
|
-
return preprocessor.ntree_filter(template=template, sigma_range=sigma_range)
|
141
|
-
|
142
|
-
|
143
135
|
def mean(
|
144
136
|
template: NDArray,
|
145
137
|
width: int,
|
@@ -155,9 +147,7 @@ def wedge(
|
|
155
147
|
tilt_step: float = 0,
|
156
148
|
opening_axis: int = 0,
|
157
149
|
tilt_axis: int = 1,
|
158
|
-
gaussian_sigma: float = 0,
|
159
150
|
omit_negative_frequencies: bool = True,
|
160
|
-
extrude_plane: bool = True,
|
161
151
|
infinite_plane: bool = True,
|
162
152
|
) -> NDArray:
|
163
153
|
template_ft = np.fft.rfftn(template)
|
@@ -169,9 +159,7 @@ def wedge(
|
|
169
159
|
tilt_axis=tilt_axis,
|
170
160
|
opening_axis=opening_axis,
|
171
161
|
shape=template.shape,
|
172
|
-
sigma=gaussian_sigma,
|
173
162
|
omit_negative_frequencies=omit_negative_frequencies,
|
174
|
-
extrude_plane=extrude_plane,
|
175
163
|
infinite_plane=infinite_plane,
|
176
164
|
)
|
177
165
|
np.multiply(template_ft, wedge_mask, out=template_ft)
|
@@ -185,7 +173,6 @@ def wedge(
|
|
185
173
|
tilt_step=tilt_step,
|
186
174
|
opening_axis=opening_axis,
|
187
175
|
shape=template.shape,
|
188
|
-
sigma=gaussian_sigma,
|
189
176
|
omit_negative_frequencies=omit_negative_frequencies,
|
190
177
|
)
|
191
178
|
np.multiply(template_ft, wedge_mask, out=template_ft)
|
@@ -197,6 +184,10 @@ def compute_power_spectrum(template: NDArray) -> NDArray:
|
|
197
184
|
return np.fft.fftshift(np.log(np.abs(np.fft.fftn(template))))
|
198
185
|
|
199
186
|
|
187
|
+
def invert_contrast(template: NDArray) -> NDArray:
|
188
|
+
return template * -1
|
189
|
+
|
190
|
+
|
200
191
|
def widgets_from_function(function: Callable, exclude_params: List = ["self"]):
|
201
192
|
"""
|
202
193
|
Creates list of magicui widgets by inspecting function typing ann
|
@@ -252,13 +243,13 @@ WRAPPED_FUNCTIONS = {
|
|
252
243
|
"gaussian_filter": gaussian_filter,
|
253
244
|
"bandpass_filter": bandpass_filter,
|
254
245
|
"edge_gaussian_filter": edge_gaussian_filter,
|
255
|
-
"ntree_filter": ntree,
|
256
246
|
"local_gaussian_filter": local_gaussian_filter,
|
257
247
|
"difference_of_gaussian_filter": difference_of_gaussian_filter,
|
258
248
|
"mean_filter": mean,
|
259
249
|
"wedge_filter": wedge,
|
260
250
|
"power_spectrum": compute_power_spectrum,
|
261
251
|
"ctf": ctf_filter,
|
252
|
+
"invert_contrast": invert_contrast,
|
262
253
|
}
|
263
254
|
|
264
255
|
EXCLUDED_FUNCTIONS = [
|
@@ -487,10 +478,9 @@ def wedge_mask(
|
|
487
478
|
tilt_step: float = 0,
|
488
479
|
opening_axis: int = 0,
|
489
480
|
tilt_axis: int = 2,
|
490
|
-
gaussian_sigma: float = 0,
|
491
481
|
omit_negative_frequencies: bool = False,
|
492
|
-
|
493
|
-
|
482
|
+
infinite_plane: bool = False,
|
483
|
+
weight_angle: bool = False,
|
494
484
|
**kwargs,
|
495
485
|
) -> NDArray:
|
496
486
|
if tilt_step <= 0:
|
@@ -500,22 +490,23 @@ def wedge_mask(
|
|
500
490
|
tilt_axis=tilt_axis,
|
501
491
|
opening_axis=opening_axis,
|
502
492
|
shape=template.shape,
|
503
|
-
sigma=gaussian_sigma,
|
504
493
|
omit_negative_frequencies=omit_negative_frequencies,
|
505
|
-
extrude_plane=extrude_plane,
|
506
494
|
infinite_plane=infinite_plane,
|
507
495
|
)
|
508
496
|
wedge_mask = np.fft.fftshift(wedge_mask)
|
509
497
|
return wedge_mask
|
510
498
|
|
499
|
+
weights = None
|
500
|
+
tilt_angles = np.arange(-tilt_start, tilt_stop + tilt_step, tilt_step)
|
501
|
+
if weight_angle:
|
502
|
+
weights = np.cos(np.radians(tilt_angles))
|
503
|
+
|
511
504
|
wedge_mask = preprocessor.step_wedge_mask(
|
512
|
-
|
513
|
-
stop_tilt=tilt_stop,
|
505
|
+
tilt_angles=tilt_angles,
|
514
506
|
tilt_axis=tilt_axis,
|
515
|
-
tilt_step=tilt_step,
|
516
507
|
opening_axis=opening_axis,
|
517
508
|
shape=template.shape,
|
518
|
-
|
509
|
+
weights=weights,
|
519
510
|
omit_negative_frequencies=omit_negative_frequencies,
|
520
511
|
)
|
521
512
|
|
@@ -634,6 +625,7 @@ class MaskWidget(widgets.Container):
|
|
634
625
|
|
635
626
|
data = active_layer.data.copy()
|
636
627
|
cutoff = np.quantile(data, self.percentile_range_edit.value / 100)
|
628
|
+
cutoff = max(cutoff, np.finfo(np.float32).resolution)
|
637
629
|
data[data < cutoff] = 0
|
638
630
|
|
639
631
|
center_of_mass = Density.center_of_mass(np.abs(data), 0)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pytme
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.4
|
4
4
|
Summary: Python Template Matching Engine
|
5
5
|
Author: Valentin Maurer
|
6
6
|
Author-email: Valentin Maurer <valentin.maurer@embl-hamburg.de>
|
@@ -12,7 +12,7 @@ Requires-Python: >=3.11
|
|
12
12
|
Description-Content-Type: text/markdown
|
13
13
|
License-File: LICENSE
|
14
14
|
Requires-Dist: mrcfile >=1.4.3
|
15
|
-
Requires-Dist: numpy
|
15
|
+
Requires-Dist: numpy <2.0,>=1.22.2
|
16
16
|
Requires-Dist: pyfftw >=0.13.1
|
17
17
|
Requires-Dist: pytest >=6.2.5
|
18
18
|
Requires-Dist: PyYAML >=6.0
|
@@ -30,13 +30,14 @@ Requires-Dist: torch ; extra == 'all'
|
|
30
30
|
Requires-Dist: jax ; extra == 'all'
|
31
31
|
Requires-Dist: jaxlib ; extra == 'all'
|
32
32
|
Provides-Extra: cupy
|
33
|
-
Requires-Dist: cupy ; extra == 'cupy'
|
33
|
+
Requires-Dist: cupy-cuda12x ; extra == 'cupy'
|
34
34
|
Requires-Dist: voltools ==0.6.0 ; extra == 'cupy'
|
35
35
|
Provides-Extra: jax
|
36
36
|
Requires-Dist: jax ; extra == 'jax'
|
37
37
|
Requires-Dist: jaxlib ; extra == 'jax'
|
38
38
|
Provides-Extra: pytorch
|
39
39
|
Requires-Dist: torch ; extra == 'pytorch'
|
40
|
+
Requires-Dist: torchvision ; extra == 'pytorch'
|
40
41
|
|
41
42
|
# Python Template Matching Engine (PyTME)
|
42
43
|
|
@@ -47,9 +48,9 @@ Requires-Dist: torch ; extra == 'pytorch'
|
|
47
48
|
|
48
49
|
PyTME is a Python library for data-intensive n-dimensional template matching using CPUs and GPUs.
|
49
50
|
|
50
|
-
With its [backend-agnostic design](https://kosinskilab.github.io/pyTME/reference/backends.html), the same code can be run on diverse hardware platforms using a best-of-breed approach. The underyling abstract backend specification allows for adding new backends to benefit from gains in performance and capabilities without modifying the library's core routines. The implementation of template matching scores is modular and provides developers with a flexible framework for rapid prototyping. Furthermore, pyTME supports a unique callback capability through [analyzers](https://kosinskilab.github.io/pyTME/reference/analyzer.html), which allows for injection of custom code, enabling real-time processing and manipulation of results
|
51
|
+
With its [backend-agnostic design](https://kosinskilab.github.io/pyTME/reference/backends.html), the same code can be run on diverse hardware platforms using a best-of-breed approach. The underyling abstract backend specification allows for adding new backends to benefit from gains in performance and capabilities without modifying the library's core routines. The implementation of template matching scores is modular and provides developers with a flexible framework for rapid prototyping. Furthermore, pyTME supports a unique callback capability through [analyzers](https://kosinskilab.github.io/pyTME/reference/analyzer.html), which allows for injection of custom code, enabling real-time processing and manipulation of results.
|
51
52
|
|
52
|
-
PyTME includes a [graphical user interface](https://kosinskilab.github.io/pyTME/
|
53
|
+
PyTME includes a [graphical user interface](https://kosinskilab.github.io/pyTME/preprocessing/gui_example.html) that provides simplified mask creation, interactive filter exploration, result visualization, and manual refinement capabilities. This GUI serves as an accessible entry point to the library's core functionalities, allowing users to efficiently interact with and analyze their data.
|
53
54
|
|
54
55
|
Finally, pyTME offers specialized tools for cryogenic electron microscopy data, such as wedge masks, CTF correction, as well as [means for handling structural data](https://kosinskilab.github.io/pyTME/reference/data_structure.html). Through dedicated [integrations](https://kosinskilab.github.io/pyTME/quickstart/integrations.html), the output of pyTME seamlessly integrates with commonly used cryogenic electron microscopy software such as RELION, Dynamo and IMOD.
|
55
56
|
|
@@ -68,17 +69,17 @@ We recommend installation using one of the following methods
|
|
68
69
|
You can find alternative installation methods in the [documentation](https://kosinskilab.github.io/pyTME/quickstart/installation.html).
|
69
70
|
|
70
71
|
|
71
|
-
##
|
72
|
+
## User Guide
|
72
73
|
|
73
74
|
Learn how to get started with
|
74
75
|
|
75
|
-
- [Preprocessing:](https://kosinskilab.github.io/pyTME/quickstart/preprocessing.html) Picking the right mask and filter for template matching.
|
76
|
-
- [Template matching:](https://kosinskilab.github.io/pyTME/quickstart/
|
77
|
-
- [Postprocessing](https://kosinskilab.github.io/pyTME/quickstart/postprocessing.html) Analyze template matching results and downstream integrations.
|
76
|
+
- [Preprocessing:](https://kosinskilab.github.io/pyTME/quickstart/preprocessing/motivation.html) Picking the right mask and filter for template matching.
|
77
|
+
- [Template matching:](https://kosinskilab.github.io/pyTME/quickstart/matching/motivation.html) Find your template of interest.
|
78
|
+
- [Postprocessing](https://kosinskilab.github.io/pyTME/quickstart/postprocessing/motivation.html) Analyze template matching results and downstream integrations.
|
78
79
|
|
79
80
|
## How to Cite
|
80
81
|
|
81
|
-
If
|
82
|
+
If pyTME contributed significantly to your research, please cite the corresponding publication on [SoftwareX](https://www.sciencedirect.com/science/article/pii/S2352711024000074).
|
82
83
|
|
83
84
|
```bibtex
|
84
85
|
@article{Maurer:2024aa,
|
@@ -0,0 +1,119 @@
|
|
1
|
+
pytme-0.2.4.data/scripts/estimate_ram_usage.py,sha256=R1NDpFajcF-MonJ4a43SfDlA-nxBYwK7D2quzCdsVFM,2767
|
2
|
+
pytme-0.2.4.data/scripts/match_template.py,sha256=fDxH0yYudh4bWimmum1hCtjasG1EVJp6mKZ8a6zDt0Q,39852
|
3
|
+
pytme-0.2.4.data/scripts/postprocess.py,sha256=50PwDfOWe2Fdws4J5K-k2SgM55fARlAWCnIsv-l0i-4,24414
|
4
|
+
pytme-0.2.4.data/scripts/preprocess.py,sha256=A2nQlNr2fvrZ6C89jGsscgWk85KuDQIPKloQGBhExeE,4380
|
5
|
+
pytme-0.2.4.data/scripts/preprocessor_gui.py,sha256=AHgL8j7nVCH3srsyGYWU7i3mCxeu00H-mR2qObR90GA,39071
|
6
|
+
scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
+
scripts/estimate_ram_usage.py,sha256=rN7haobnHg3YcgGJIp81FNiCzy8-saJGeEurQlmQmNQ,2768
|
8
|
+
scripts/eval.py,sha256=ebJVLxbRlB6TI5YHNr0VavZ4lmaRdf8QVafyiDhh_oU,2528
|
9
|
+
scripts/extract_candidates.py,sha256=DAfNyuauogWvSdRWIbtH44tsk9buLn13JrL1zJjJGLE,8373
|
10
|
+
scripts/match_template.py,sha256=XYvrubQ8GOetpxnwT1z3Or3xW8h6YrykofA2-w5vLvI,39853
|
11
|
+
scripts/match_template_filters.py,sha256=Gj4a1b_S5NWp_dfFEPFn0D7jGf-qYgBbnTvZZ4bwqOQ,42036
|
12
|
+
scripts/postprocess.py,sha256=FdA4AZgsbz8enYT6q46akWX4O5Hdxrun4PUdomYhrPA,24415
|
13
|
+
scripts/preprocess.py,sha256=mUeGcVKtVhaqdfKNb_wrahsrD2p4LMlAko2mgljiDKU,4381
|
14
|
+
scripts/preprocessor_gui.py,sha256=jV3s2rUWl_8qCt669UsBeNqk_ulnAKWjnANesT7vEFQ,39072
|
15
|
+
scripts/refine_matches.py,sha256=Y17Ku_t0W9vglPNF2oU5EFrqoedJIm3lCGl-hXRHvjc,21920
|
16
|
+
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
|
+
tests/test_analyzer.py,sha256=wXFuCqV-yOIQUWeffSElTWUoSqpPAjI5AfKBbDfoTo8,11075
|
18
|
+
tests/test_backends.py,sha256=Ap4y2xtVk6-ZC0l6lX6F2pfdh0-HxMqe1Nt4fIVNGJg,14941
|
19
|
+
tests/test_density.py,sha256=mdzQgdlcIHBgkY_RyQn5FIuYALlmVPbw_zUYV7Cn0Zk,19138
|
20
|
+
tests/test_extensions.py,sha256=1Zv9dG_dmmC2mlbX91YIPyGLSToPC0202-ffLAfVcr4,5203
|
21
|
+
tests/test_matching_cli.py,sha256=9qLrUM3nuIkY_LaKuzxtTjOqtgC9jUCMZXTWhUxYBGw,9349
|
22
|
+
tests/test_matching_data.py,sha256=TyvnSJPzdLPiXYWdz9coQ-m4H1tUS_cbD0WaBdvrevg,6062
|
23
|
+
tests/test_matching_exhaustive.py,sha256=-Xm8jro1YJ3uPcPUCNazWX9Y7CxsTwPeKoy2Vr8TVH8,5531
|
24
|
+
tests/test_matching_memory.py,sha256=jypztjDwTxvixHKteZzcvTzEVyOyJzVNK5JxlzInLcE,1145
|
25
|
+
tests/test_matching_optimization.py,sha256=nG2R03eWGsZmdLPI0O0yBVKeD2k0C65OMJ7YKV5HLsc,9823
|
26
|
+
tests/test_matching_utils.py,sha256=jdQc8L5RhFFo5T_EeiIrDs6z8G43yAI-iBe5FKr5KZc,11401
|
27
|
+
tests/test_orientations.py,sha256=4ngFOUskcsumaaVCYIxapjdjX0A7KUM6VGkjLV-y9_Y,6776
|
28
|
+
tests/test_packaging.py,sha256=fZhTXqa_1ONSZSVW581QRZaFPw13l0Wpc-p8AgQ4b3E,2783
|
29
|
+
tests/test_parser.py,sha256=57oaksWrKNB4Z_22IxfW0nXMyQWLJFVsuvnJQPhMn10,993
|
30
|
+
tests/test_structure.py,sha256=3vGD18GaUX4Zse1I_OAmUf6QzVILhkDmVtj0wxUcf_o,8721
|
31
|
+
tests/data/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
32
|
+
tests/data/README.md,sha256=RMyG_mojKLo6AEIHUj40nTPI7ZGcs_6dRzWSRGxTgGY,83
|
33
|
+
tests/data/Blurring/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
34
|
+
tests/data/Blurring/blob_width18.npy,sha256=_BVu5T2q_8N5lA2KCMUTLwknec8fHXh9Nsyoa4ov0wo,21408
|
35
|
+
tests/data/Blurring/edgegaussian_sigma3.npy,sha256=OvxXAyJs5V_m7b91BFhBqS9BnisKWbckVcMlHuChQiY,21408
|
36
|
+
tests/data/Blurring/gaussian_sigma2.npy,sha256=OS9sNpu0Y7l--X8dyB-mp-EE5eaNHISqiNkOOutllfc,21408
|
37
|
+
tests/data/Blurring/hamming_width6.npy,sha256=yKdrOYGfHn-ER7GpTzASqfLZHkAR7AFeBcNRXrs4aIg,21408
|
38
|
+
tests/data/Blurring/kaiserb_width18.npy,sha256=08grtR1E2dWRfksiPrEdN0nQwugd6o-TV5lKwnuLXQg,21408
|
39
|
+
tests/data/Blurring/localgaussian_sigma0510.npy,sha256=KXASnlhxAnvvcgIDCniIHkak-NhsF_QmSV7j-p9kSk4,21408
|
40
|
+
tests/data/Blurring/mean_size5.npy,sha256=2APwsCR_1fpwGIc_mG0dPegpcbgXhUbcEEeQo9Wa1iA,42688
|
41
|
+
tests/data/Blurring/ntree_sigma0510.npy,sha256=HxYh_ItxdKulp8UiPMzQ0ze2iiQ3Oi7seWFvEzO1kWQ,21408
|
42
|
+
tests/data/Blurring/rank_rank3.npy,sha256=MxCsomoNPmiV0Cd-5nl2S8TYCfLyEj-WV19gLH_xe0c,21408
|
43
|
+
tests/data/Maps/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
44
|
+
tests/data/Maps/emd_8621.mrc.gz,sha256=ZAlSOQRT9B_e8xpeodio9j0WBzygl2R1ctg9m8QhCRA,4572566
|
45
|
+
tests/data/Raw/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
46
|
+
tests/data/Raw/em_map.map,sha256=YeY_R0p-90-oZgxfbKGIsyE5bui_uWq9iGhWl0bLYZI,22304
|
47
|
+
tests/data/Structures/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
48
|
+
tests/data/Structures/1pdj.cif,sha256=QdO4e2ulO621PVoK3q9n0qDPDKnzJpV6sPeG6zQec1A,169343
|
49
|
+
tests/data/Structures/1pdj.pdb,sha256=nTFGjecultoXNVUBDdsyho0CEzX5i1fSo_aBYDh5-pU,115749
|
50
|
+
tests/data/Structures/5khe.cif,sha256=SnC0so37wyuoYwAX5UDTTLvQiknZXxeJrvkGai-11rw,214644
|
51
|
+
tests/data/Structures/5khe.ent,sha256=AjXInxR_DgglZATzSNgB1rs7-LgAn2G1NdgnHb6fAmM,179010
|
52
|
+
tests/data/Structures/5khe.pdb,sha256=AjXInxR_DgglZATzSNgB1rs7-LgAn2G1NdgnHb6fAmM,179010
|
53
|
+
tests/data/Structures/5uz4.cif,sha256=KIcBaOf-RvOV4VRl1AU_EK4BsMxGXS8s8_UdlIhyeWk,6079401
|
54
|
+
tests/preprocessing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
|
+
tests/preprocessing/test_compose.py,sha256=mk4c4TephOnxSMpiE6iug_uu8fn-xDDe58swdrgq8Os,2496
|
56
|
+
tests/preprocessing/test_frequency_filters.py,sha256=zXBRBvuFjiKWiT8yTXWYfYF3kKGTkokpro7nzXWghFA,6640
|
57
|
+
tests/preprocessing/test_preprocessor.py,sha256=XyR4xc4YM76PUKuTIiive76Q85DdcyDAvbXNGcoKL8w,4820
|
58
|
+
tests/preprocessing/test_utils.py,sha256=M6rmFl7a3JaBdONvPHhkbkzoDjjOAwrztPTHXqsbN6o,3037
|
59
|
+
tme/__init__.py,sha256=R0cxXFmTvL3p7y6D0zX_rfjChbXNU_-tYI4FTWZ16Ns,177
|
60
|
+
tme/__version__.py,sha256=SBl2EPFW-ltPvQ7vbVWItyAsz3aKYIpjO7vcfr84GkU,22
|
61
|
+
tme/analyzer.py,sha256=kYxtzBCp02OJrlMME8Njh-9wIZAvsuhTHNAveNplssY,50466
|
62
|
+
tme/density.py,sha256=APQgpZ8ILUsGCZTQDfAgcR_d-tm0T5m_AsPWIPr5pcg,84357
|
63
|
+
tme/extensions.cpython-311-darwin.so,sha256=KM0UcTYdq0Gib8rC6yVt7KnXrVvPNcWS-cvuYW2aPso,392496
|
64
|
+
tme/matching_data.py,sha256=UJnDk5CTDyoytD1CamUSmQR82WvtUUoFqUEadTHTIQ8,25394
|
65
|
+
tme/matching_exhaustive.py,sha256=g6znkqHcrgPMvKw2wYaHT_N9B_pR6bj1xbtTByJ-QW0,19593
|
66
|
+
tme/matching_optimization.py,sha256=Y8HfecXiOvAHXM1viBaQ_aXljqqTnGwlOlFe0MJpDRQ,45082
|
67
|
+
tme/matching_scores.py,sha256=CECxl2Lh0TMLfZYnoCJXy3euGf8i9J0eHsAD7sqvWGU,30962
|
68
|
+
tme/matching_utils.py,sha256=C4x4lxJq0_e1R-c0-JkGYM2MoqECAgJY5D1w4qaac5k,40046
|
69
|
+
tme/memory.py,sha256=6xeIMAncQkgYDi6w-PIYgFEWRTUPu0_OTCeRO0p9r9Q,11029
|
70
|
+
tme/orientations.py,sha256=KsYXJuLRLYXRHsDjP9_Tn1jXxIVPSaYkw1wRrWH3nUQ,26027
|
71
|
+
tme/parser.py,sha256=fNiCAdsWI4ql92F1Ob4suiVzpjUOBlh2lad1iNY_FP8,13772
|
72
|
+
tme/preprocessor.py,sha256=8UgPuNb0GwZ7JQoBZQisgp0r-wFKwvo0Jxb0u9kb2fg,40412
|
73
|
+
tme/structure.py,sha256=9cG9I4muinstujpj79ZJgVQEABly8OEt9Uha26FXJLM,65800
|
74
|
+
tme/types.py,sha256=NAY7C4qxE6yz-DXVtClMvFfoOV-spWGLNfpLATZ1LcU,442
|
75
|
+
tme/backends/__init__.py,sha256=4S68W2WJNZ9t33QSrRs6aL3OIyEVFo_zVsqXjS1iWYA,5185
|
76
|
+
tme/backends/_jax_utils.py,sha256=YuNJHCYnSqOESMV-9LPr-ZxBg6Zvax2euBjsZM-j-64,5906
|
77
|
+
tme/backends/cupy_backend.py,sha256=1nnCJ4nT7tJsXu1mrJGCy7x0Yg1wWVRg4SdzsQ2qiiw,9284
|
78
|
+
tme/backends/jax_backend.py,sha256=femPIcppQVPKMyVIowgoOFFWOArvAX16aLvGho8qBNQ,10414
|
79
|
+
tme/backends/matching_backend.py,sha256=KfCOKD_rA9el3Y7BeH17KJ1apCUIIhhvn-vmbkb3CB0,33750
|
80
|
+
tme/backends/mlx_backend.py,sha256=FJhqmCzgjXAjWGX1HhHFrCy_We4YwQQBkKFNG05ctzM,7788
|
81
|
+
tme/backends/npfftw_backend.py,sha256=JDTc_1QcVi9jU3yLQF7jkgwQz_Po60OhkKuV2V3g5v8,16997
|
82
|
+
tme/backends/pytorch_backend.py,sha256=61cAu8HBtGPDL8vSJx49f6yBxkLoWiX0X49Dy2tHAuk,15038
|
83
|
+
tme/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
84
|
+
tme/data/c48n309.npy,sha256=NwH64mOEbm3tStq5c98o81fY1vMOoq4nvXDAh7Z7iZg,296768
|
85
|
+
tme/data/c48n527.npy,sha256=saSUMTa1R0MisPvgFL02a7IHQSwEZ-mJu0v3qJjg5AU,506048
|
86
|
+
tme/data/c48n9.npy,sha256=bDVLV6mWjZHSQfeDc-MOCKKarfc1jaNeVvpoe2xMUy4,8768
|
87
|
+
tme/data/c48u1.npy,sha256=JeXMFzFITs2ezdc3x5lp3jo1cHHHHVADSA1Tpf77kXs,1088
|
88
|
+
tme/data/c48u1153.npy,sha256=ECiEximtYDWtIux3Fwe_EJlyn08gUqP85DN9gjkT9_k,1107008
|
89
|
+
tme/data/c48u1201.npy,sha256=aceC_Jeienz_81X4520nPpZcg5tnRhbW795EqbpWkrg,1153088
|
90
|
+
tme/data/c48u1641.npy,sha256=p4LwW3LzdTjrUUpA7H53RfNWxYfPX0XjeSwZ39Ac78Q,1575488
|
91
|
+
tme/data/c48u181.npy,sha256=mLYXrv1YHLH6DsBp5MkxHkxlxgMnj1mw_KKI0udH-FY,173888
|
92
|
+
tme/data/c48u2219.npy,sha256=p8TQeX8YHu4pdxnwJjEAlQWAPa66W7kpK96iZKZr9JE,2130368
|
93
|
+
tme/data/c48u27.npy,sha256=k03ZNEsoPwBKCy8IeIa5G0WRZqjGZMtX6Ibu7EpJHvU,26048
|
94
|
+
tme/data/c48u2947.npy,sha256=icI97ED6ct66y7FIaJAugmjzrIWk7CINCxtO3wDTnrU,2829248
|
95
|
+
tme/data/c48u3733.npy,sha256=tla-__Pf-hpN6h04vtFIfkkFdCLple11VO06kr1dXkM,3583808
|
96
|
+
tme/data/c48u4749.npy,sha256=tItOA4oV7SiqCCREwz3fyEpZoxM0lCq_jfEo5_-fp2s,4559168
|
97
|
+
tme/data/c48u5879.npy,sha256=bFk89MllIFCX_sLXTYWFquSyN1NuahH4wwnEsPJLxzA,5643968
|
98
|
+
tme/data/c48u7111.npy,sha256=CMy9kI2edH-q9eTIVdgUtXurplYNI7Uqp4dXfkkVdf8,6826688
|
99
|
+
tme/data/c48u815.npy,sha256=bCuJxLtm0Sjg3GGxtyjGzRYZ1G0Gz79XHI-71GvqQnI,782528
|
100
|
+
tme/data/c48u83.npy,sha256=7ODJYnsiuDjGbgd9GFopsyIW2IjrYI0J2X2f-cK868U,79808
|
101
|
+
tme/data/c48u8649.npy,sha256=-IPlpR4zrPQZWhhSPu4zEulFdrCEVgTMFffCB5d-huE,8303168
|
102
|
+
tme/data/c600v.npy,sha256=JqSu3ALoL1A9iguehc0YGUMFPsh2fprHHp76VXeFXIw,2528
|
103
|
+
tme/data/c600vc.npy,sha256=Yht-GFXDSjjGvsjFBvyxxEZAI-ODADPd5gEgFNZQVTA,14528
|
104
|
+
tme/data/metadata.yaml,sha256=fAgX-mEzB0QMHTEtYDG4cSMbJhYxBbDJH3sdvJvL7a8,750
|
105
|
+
tme/data/quat_to_numpy.py,sha256=-gkDZb10fKBxwfYrSLCUWvMB76TzZWELCeKsYProwws,1333
|
106
|
+
tme/data/scattering_factors.pickle,sha256=ZHktBc_AlS4H6uoER8AMmn5zOgjBwzgC92hUyww3Nik,38669
|
107
|
+
tme/external/bindings.cpp,sha256=CIukugVf55LicY2uSCasHWQlrlO9GS2iUuCR3WLvncM,12912
|
108
|
+
tme/preprocessing/__init__.py,sha256=7O3vDzJcIfxovJkf7avWSPtzaIVlTbmsW7egQFukC_s,98
|
109
|
+
tme/preprocessing/_utils.py,sha256=1K8xPquM0v1MASwsMpIc3ZWxxpUFt69LezVZY5QcJnY,6179
|
110
|
+
tme/preprocessing/composable_filter.py,sha256=zmXN_NcuvvtstFdU6yYQ09z-XJFE4Y-kkMCL4vHy-jc,778
|
111
|
+
tme/preprocessing/compose.py,sha256=NFB6oUQOwn8foy82i3Lm5DeZUd_5dmcKdhuwX8E6wpo,1454
|
112
|
+
tme/preprocessing/frequency_filters.py,sha256=XPG6zRF_VSPH4CWFj1BLICm3_jNrzmiHaln0JZR7CrU,12755
|
113
|
+
tme/preprocessing/tilt_series.py,sha256=6OptAfqISxzZOtHIx5MdSaJf7VGFeDntz2jWekpZMus,37307
|
114
|
+
pytme-0.2.4.dist-info/LICENSE,sha256=K1IUNSVAz8BXbpH5EA8y5FpaHdvFXnAF2zeK95Lr2bY,18467
|
115
|
+
pytme-0.2.4.dist-info/METADATA,sha256=fq2oJEwpG-N_8XYERPQwaBD-IbXySwuJ75BG8NP0WtQ,5278
|
116
|
+
pytme-0.2.4.dist-info/WHEEL,sha256=uY16WuvBs6SVLr1w0jr9fTUdSkt0n_9cWxlDSGwcm3o,109
|
117
|
+
pytme-0.2.4.dist-info/entry_points.txt,sha256=ff3LQL3FCWfCYOwFiP9zatm7laUbnwCkuPELkQVyUO4,241
|
118
|
+
pytme-0.2.4.dist-info/top_level.txt,sha256=ovCUR7UXXouH3zYt_fJLoqr_vtjp1wudFgjVAnztQLE,18
|
119
|
+
pytme-0.2.4.dist-info/RECORD,,
|