pytme 0.2.3__tar.gz → 0.2.4__tar.gz
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.3 → pytme-0.2.4}/MANIFEST.in +6 -0
- {pytme-0.2.3 → pytme-0.2.4}/PKG-INFO +1 -1
- {pytme-0.2.3 → pytme-0.2.4}/pyproject.toml +2 -2
- {pytme-0.2.3 → pytme-0.2.4}/pytme.egg-info/SOURCES.txt +45 -2
- {pytme-0.2.3 → pytme-0.2.4}/scripts/match_template.py +8 -8
- {pytme-0.2.3 → pytme-0.2.4}/scripts/preprocess.py +22 -6
- {pytme-0.2.3 → pytme-0.2.4}/scripts/preprocessor_gui.py +9 -14
- pytme-0.2.4/setup.py +65 -0
- pytme-0.2.4/tests/data/.DS_Store +0 -0
- pytme-0.2.4/tests/data/Blurring/.DS_Store +0 -0
- pytme-0.2.4/tests/data/Blurring/blob_width18.npy +0 -0
- pytme-0.2.4/tests/data/Blurring/edgegaussian_sigma3.npy +0 -0
- pytme-0.2.4/tests/data/Blurring/gaussian_sigma2.npy +0 -0
- pytme-0.2.4/tests/data/Blurring/hamming_width6.npy +0 -0
- pytme-0.2.4/tests/data/Blurring/kaiserb_width18.npy +0 -0
- pytme-0.2.4/tests/data/Blurring/localgaussian_sigma0510.npy +0 -0
- pytme-0.2.4/tests/data/Blurring/mean_size5.npy +0 -0
- pytme-0.2.4/tests/data/Blurring/ntree_sigma0510.npy +0 -0
- pytme-0.2.4/tests/data/Blurring/rank_rank3.npy +0 -0
- pytme-0.2.4/tests/data/Maps/.DS_Store +0 -0
- pytme-0.2.4/tests/data/Maps/emd_8621.mrc.gz +0 -0
- pytme-0.2.4/tests/data/README.md +2 -0
- pytme-0.2.4/tests/data/Raw/.DS_Store +0 -0
- pytme-0.2.4/tests/data/Raw/em_map.map +0 -0
- pytme-0.2.4/tests/data/Structures/.DS_Store +0 -0
- pytme-0.2.4/tests/data/Structures/1pdj.cif +3339 -0
- pytme-0.2.4/tests/data/Structures/1pdj.pdb +1429 -0
- pytme-0.2.4/tests/data/Structures/5khe.cif +3685 -0
- pytme-0.2.4/tests/data/Structures/5khe.ent +2210 -0
- pytme-0.2.4/tests/data/Structures/5khe.pdb +2210 -0
- pytme-0.2.4/tests/data/Structures/5uz4.cif +70548 -0
- pytme-0.2.4/tests/preprocessing/__init__.py +0 -0
- pytme-0.2.4/tests/preprocessing/test_compose.py +76 -0
- pytme-0.2.4/tests/preprocessing/test_frequency_filters.py +178 -0
- pytme-0.2.4/tests/preprocessing/test_preprocessor.py +136 -0
- pytme-0.2.4/tests/preprocessing/test_utils.py +79 -0
- pytme-0.2.4/tests/test_analyzer.py +310 -0
- pytme-0.2.4/tests/test_backends.py +375 -0
- pytme-0.2.4/tests/test_density.py +508 -0
- pytme-0.2.4/tests/test_extensions.py +130 -0
- pytme-0.2.4/tests/test_matching_cli.py +283 -0
- pytme-0.2.4/tests/test_matching_data.py +162 -0
- pytme-0.2.4/tests/test_matching_exhaustive.py +162 -0
- pytme-0.2.4/tests/test_matching_memory.py +30 -0
- pytme-0.2.4/tests/test_matching_optimization.py +276 -0
- pytme-0.2.4/tests/test_matching_utils.py +326 -0
- pytme-0.2.4/tests/test_orientations.py +173 -0
- pytme-0.2.4/tests/test_packaging.py +95 -0
- pytme-0.2.4/tests/test_parser.py +33 -0
- pytme-0.2.4/tests/test_structure.py +243 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/__init__.py +0 -1
- pytme-0.2.4/tme/__version__.py +1 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/backends/jax_backend.py +8 -7
- pytme-0.2.4/tme/data/__init__.py +0 -0
- pytme-0.2.4/tme/data/scattering_factors.pickle +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/density.py +11 -4
- {pytme-0.2.3 → pytme-0.2.4}/tme/matching_data.py +11 -9
- {pytme-0.2.3 → pytme-0.2.4}/tme/matching_exhaustive.py +10 -8
- {pytme-0.2.3 → pytme-0.2.4}/tme/matching_utils.py +1 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/_utils.py +14 -14
- {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/composable_filter.py +0 -2
- {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/compose.py +4 -4
- {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/frequency_filters.py +32 -35
- {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/tilt_series.py +202 -118
- {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessor.py +24 -246
- {pytme-0.2.3 → pytme-0.2.4}/tme/structure.py +14 -14
- pytme-0.2.3/setup.py +0 -65
- pytme-0.2.3/tme/__version__.py +0 -1
- pytme-0.2.3/tme/matching_memory.py +0 -383
- {pytme-0.2.3 → pytme-0.2.4}/LICENSE +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/README.md +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/scripts/__init__.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/scripts/estimate_ram_usage.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/scripts/eval.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/scripts/extract_candidates.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/scripts/match_template_filters.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/scripts/postprocess.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/scripts/refine_matches.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/setup.cfg +0 -0
- {pytme-0.2.3/tme/data → pytme-0.2.4/tests}/__init__.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/analyzer.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/backends/__init__.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/backends/_jax_utils.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/backends/cupy_backend.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/backends/matching_backend.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/backends/mlx_backend.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/backends/npfftw_backend.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/backends/pytorch_backend.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48n309.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48n527.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48n9.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u1.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u1153.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u1201.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u1641.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u181.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u2219.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u27.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u2947.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u3733.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u4749.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u5879.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u7111.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u815.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u83.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u8649.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c600v.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/c600vc.npy +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/metadata.yaml +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/data/quat_to_numpy.py +0 -0
- /pytme-0.2.3/src/extensions.cpp → /pytme-0.2.4/tme/external/bindings.cpp +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/matching_optimization.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/matching_scores.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/memory.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/orientations.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/parser.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/__init__.py +0 -0
- {pytme-0.2.3 → pytme-0.2.4}/tme/types.py +0 -0
@@ -70,3 +70,9 @@ global-exclude tme/package.py
|
|
70
70
|
global-exclude tme/transforms.py
|
71
71
|
global-exclude tme/tests/test_packaging.py
|
72
72
|
global-exclude scripts/match_template_devel.py
|
73
|
+
|
74
|
+
# Explicit package data include
|
75
|
+
include tme/data/*.npy
|
76
|
+
include tme/data/metadata.yaml
|
77
|
+
include tme/data/scattering_factors.pickle
|
78
|
+
recursive-include tests/data *
|
@@ -7,7 +7,7 @@ name="pytme"
|
|
7
7
|
authors = [
|
8
8
|
{ name = "Valentin Maurer", email = "valentin.maurer@embl-hamburg.de" },
|
9
9
|
]
|
10
|
-
version="0.2.
|
10
|
+
version="0.2.4"
|
11
11
|
description="Python Template Matching Engine"
|
12
12
|
readme="README.md"
|
13
13
|
requires-python = ">=3.11"
|
@@ -63,5 +63,5 @@ addopts = [
|
|
63
63
|
|
64
64
|
[tool.coverage.run]
|
65
65
|
omit = [
|
66
|
-
"
|
66
|
+
"tests/*"
|
67
67
|
]
|
@@ -13,14 +13,55 @@ scripts/postprocess.py
|
|
13
13
|
scripts/preprocess.py
|
14
14
|
scripts/preprocessor_gui.py
|
15
15
|
scripts/refine_matches.py
|
16
|
-
|
16
|
+
tests/__init__.py
|
17
|
+
tests/test_analyzer.py
|
18
|
+
tests/test_backends.py
|
19
|
+
tests/test_density.py
|
20
|
+
tests/test_extensions.py
|
21
|
+
tests/test_matching_cli.py
|
22
|
+
tests/test_matching_data.py
|
23
|
+
tests/test_matching_exhaustive.py
|
24
|
+
tests/test_matching_memory.py
|
25
|
+
tests/test_matching_optimization.py
|
26
|
+
tests/test_matching_utils.py
|
27
|
+
tests/test_orientations.py
|
28
|
+
tests/test_packaging.py
|
29
|
+
tests/test_parser.py
|
30
|
+
tests/test_structure.py
|
31
|
+
tests/data/.DS_Store
|
32
|
+
tests/data/README.md
|
33
|
+
tests/data/Blurring/.DS_Store
|
34
|
+
tests/data/Blurring/blob_width18.npy
|
35
|
+
tests/data/Blurring/edgegaussian_sigma3.npy
|
36
|
+
tests/data/Blurring/gaussian_sigma2.npy
|
37
|
+
tests/data/Blurring/hamming_width6.npy
|
38
|
+
tests/data/Blurring/kaiserb_width18.npy
|
39
|
+
tests/data/Blurring/localgaussian_sigma0510.npy
|
40
|
+
tests/data/Blurring/mean_size5.npy
|
41
|
+
tests/data/Blurring/ntree_sigma0510.npy
|
42
|
+
tests/data/Blurring/rank_rank3.npy
|
43
|
+
tests/data/Maps/.DS_Store
|
44
|
+
tests/data/Maps/emd_8621.mrc.gz
|
45
|
+
tests/data/Raw/.DS_Store
|
46
|
+
tests/data/Raw/em_map.map
|
47
|
+
tests/data/Structures/.DS_Store
|
48
|
+
tests/data/Structures/1pdj.cif
|
49
|
+
tests/data/Structures/1pdj.pdb
|
50
|
+
tests/data/Structures/5khe.cif
|
51
|
+
tests/data/Structures/5khe.ent
|
52
|
+
tests/data/Structures/5khe.pdb
|
53
|
+
tests/data/Structures/5uz4.cif
|
54
|
+
tests/preprocessing/__init__.py
|
55
|
+
tests/preprocessing/test_compose.py
|
56
|
+
tests/preprocessing/test_frequency_filters.py
|
57
|
+
tests/preprocessing/test_preprocessor.py
|
58
|
+
tests/preprocessing/test_utils.py
|
17
59
|
tme/__init__.py
|
18
60
|
tme/__version__.py
|
19
61
|
tme/analyzer.py
|
20
62
|
tme/density.py
|
21
63
|
tme/matching_data.py
|
22
64
|
tme/matching_exhaustive.py
|
23
|
-
tme/matching_memory.py
|
24
65
|
tme/matching_optimization.py
|
25
66
|
tme/matching_scores.py
|
26
67
|
tme/matching_utils.py
|
@@ -61,6 +102,8 @@ tme/data/c600v.npy
|
|
61
102
|
tme/data/c600vc.npy
|
62
103
|
tme/data/metadata.yaml
|
63
104
|
tme/data/quat_to_numpy.py
|
105
|
+
tme/data/scattering_factors.pickle
|
106
|
+
tme/external/bindings.cpp
|
64
107
|
tme/preprocessing/__init__.py
|
65
108
|
tme/preprocessing/_utils.py
|
66
109
|
tme/preprocessing/composable_filter.py
|
@@ -186,8 +186,10 @@ def setup_filter(args, template: Density, target: Density) -> Tuple[Compose, Com
|
|
186
186
|
ReconstructFromTilt,
|
187
187
|
)
|
188
188
|
|
189
|
+
needs_reconstruction = False
|
189
190
|
template_filter, target_filter = [], []
|
190
191
|
if args.tilt_angles is not None:
|
192
|
+
needs_reconstruction = args.tilt_weighting is not None
|
191
193
|
try:
|
192
194
|
wedge = Wedge.from_file(args.tilt_angles)
|
193
195
|
wedge.weight_type = args.tilt_weighting
|
@@ -232,11 +234,12 @@ def setup_filter(args, template: Density, target: Density) -> Tuple[Compose, Com
|
|
232
234
|
angles=tilt_angles,
|
233
235
|
weight_wedge=args.tilt_weighting == "angle",
|
234
236
|
create_continuous_wedge=create_continuous_wedge,
|
237
|
+
reconstruction_filter=args.reconstruction_filter,
|
235
238
|
)
|
236
239
|
wedge_target = WedgeReconstructed(
|
237
|
-
angles=tilt_angles,
|
240
|
+
angles=(np.abs(np.min(tilt_angles)), np.abs(np.max(tilt_angles))),
|
238
241
|
weight_wedge=False,
|
239
|
-
create_continuous_wedge=
|
242
|
+
create_continuous_wedge=True,
|
240
243
|
)
|
241
244
|
target_filter.append(wedge_target)
|
242
245
|
|
@@ -323,18 +326,13 @@ def setup_filter(args, template: Density, target: Density) -> Tuple[Compose, Com
|
|
323
326
|
sampling_rate=template.sampling_rate,
|
324
327
|
)
|
325
328
|
template_filter.append(bandpass)
|
326
|
-
|
327
|
-
if not args.no_filter_target:
|
328
|
-
target_filter.append(bandpass)
|
329
|
+
target_filter.append(bandpass)
|
329
330
|
|
330
331
|
if args.whiten_spectrum:
|
331
332
|
whitening_filter = LinearWhiteningFilter()
|
332
333
|
template_filter.append(whitening_filter)
|
333
334
|
target_filter.append(whitening_filter)
|
334
335
|
|
335
|
-
needs_reconstruction = any(
|
336
|
-
[isinstance(t, ReconstructFromTilt) for t in template_filter]
|
337
|
-
)
|
338
336
|
if needs_reconstruction and args.reconstruction_filter is None:
|
339
337
|
warnings.warn(
|
340
338
|
"Consider using a --reconstruction_filter such as 'ramp' to avoid artifacts."
|
@@ -342,6 +340,8 @@ def setup_filter(args, template: Density, target: Density) -> Tuple[Compose, Com
|
|
342
340
|
|
343
341
|
template_filter = Compose(template_filter) if len(template_filter) else None
|
344
342
|
target_filter = Compose(target_filter) if len(target_filter) else None
|
343
|
+
if args.no_filter_target:
|
344
|
+
target_filter = None
|
345
345
|
|
346
346
|
return template_filter, target_filter
|
347
347
|
|
@@ -79,6 +79,14 @@ def parse_args():
|
|
79
79
|
action="store_true",
|
80
80
|
help="Assumes the template is already centered and omits centering.",
|
81
81
|
)
|
82
|
+
modulation_group.add_argument(
|
83
|
+
"--backend",
|
84
|
+
dest="backend",
|
85
|
+
type=str,
|
86
|
+
default=None,
|
87
|
+
choices=be.available_backends(),
|
88
|
+
help="Determines more suitable box size for the given compute backend.",
|
89
|
+
)
|
82
90
|
args = parser.parse_args()
|
83
91
|
return args
|
84
92
|
|
@@ -95,11 +103,18 @@ def main():
|
|
95
103
|
if not args.no_centering:
|
96
104
|
data, _ = data.centered(0)
|
97
105
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
106
|
+
for name in be.available_backends():
|
107
|
+
be.change_backend(name, device="cpu")
|
108
|
+
box = be.compute_convolution_shapes([args.box_size], [1])[1][0]
|
109
|
+
if box != args.box_size and args.backend is None:
|
110
|
+
print(f"Consider --box_size {box} instead of {args.box_size} for {name}.")
|
111
|
+
|
112
|
+
if args.backend is not None:
|
113
|
+
be.change_backend(name, device="cpu")
|
114
|
+
box = be.compute_convolution_shapes([args.box_size], [1])[1][0]
|
115
|
+
if box != args.box_size:
|
116
|
+
print(f"Changed --box_size from {args.box_size} to {box}.")
|
117
|
+
args.box_size = box
|
103
118
|
|
104
119
|
data.pad(
|
105
120
|
np.multiply(args.box_size, np.divide(args.sampling_rate, data.sampling_rate)),
|
@@ -128,5 +143,6 @@ def main():
|
|
128
143
|
|
129
144
|
data.to_file(args.output)
|
130
145
|
|
146
|
+
|
131
147
|
if __name__ == "__main__":
|
132
|
-
main()
|
148
|
+
main()
|
@@ -147,9 +147,7 @@ def wedge(
|
|
147
147
|
tilt_step: float = 0,
|
148
148
|
opening_axis: int = 0,
|
149
149
|
tilt_axis: int = 1,
|
150
|
-
gaussian_sigma: float = 0,
|
151
150
|
omit_negative_frequencies: bool = True,
|
152
|
-
extrude_plane: bool = True,
|
153
151
|
infinite_plane: bool = True,
|
154
152
|
) -> NDArray:
|
155
153
|
template_ft = np.fft.rfftn(template)
|
@@ -161,9 +159,7 @@ def wedge(
|
|
161
159
|
tilt_axis=tilt_axis,
|
162
160
|
opening_axis=opening_axis,
|
163
161
|
shape=template.shape,
|
164
|
-
sigma=gaussian_sigma,
|
165
162
|
omit_negative_frequencies=omit_negative_frequencies,
|
166
|
-
extrude_plane=extrude_plane,
|
167
163
|
infinite_plane=infinite_plane,
|
168
164
|
)
|
169
165
|
np.multiply(template_ft, wedge_mask, out=template_ft)
|
@@ -177,7 +173,6 @@ def wedge(
|
|
177
173
|
tilt_step=tilt_step,
|
178
174
|
opening_axis=opening_axis,
|
179
175
|
shape=template.shape,
|
180
|
-
sigma=gaussian_sigma,
|
181
176
|
omit_negative_frequencies=omit_negative_frequencies,
|
182
177
|
)
|
183
178
|
np.multiply(template_ft, wedge_mask, out=template_ft)
|
@@ -483,10 +478,9 @@ def wedge_mask(
|
|
483
478
|
tilt_step: float = 0,
|
484
479
|
opening_axis: int = 0,
|
485
480
|
tilt_axis: int = 2,
|
486
|
-
gaussian_sigma: float = 0,
|
487
481
|
omit_negative_frequencies: bool = False,
|
488
|
-
|
489
|
-
|
482
|
+
infinite_plane: bool = False,
|
483
|
+
weight_angle: bool = False,
|
490
484
|
**kwargs,
|
491
485
|
) -> NDArray:
|
492
486
|
if tilt_step <= 0:
|
@@ -496,22 +490,23 @@ def wedge_mask(
|
|
496
490
|
tilt_axis=tilt_axis,
|
497
491
|
opening_axis=opening_axis,
|
498
492
|
shape=template.shape,
|
499
|
-
sigma=gaussian_sigma,
|
500
493
|
omit_negative_frequencies=omit_negative_frequencies,
|
501
|
-
extrude_plane=extrude_plane,
|
502
494
|
infinite_plane=infinite_plane,
|
503
495
|
)
|
504
496
|
wedge_mask = np.fft.fftshift(wedge_mask)
|
505
497
|
return wedge_mask
|
506
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
|
+
|
507
504
|
wedge_mask = preprocessor.step_wedge_mask(
|
508
|
-
|
509
|
-
stop_tilt=tilt_stop,
|
505
|
+
tilt_angles=tilt_angles,
|
510
506
|
tilt_axis=tilt_axis,
|
511
|
-
tilt_step=tilt_step,
|
512
507
|
opening_axis=opening_axis,
|
513
508
|
shape=template.shape,
|
514
|
-
|
509
|
+
weights=weights,
|
515
510
|
omit_negative_frequencies=omit_negative_frequencies,
|
516
511
|
)
|
517
512
|
|
pytme-0.2.4/setup.py
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
import os
|
2
|
+
import platform
|
3
|
+
|
4
|
+
from setuptools import setup, find_packages
|
5
|
+
from pybind11.setup_helpers import Pybind11Extension, build_ext
|
6
|
+
|
7
|
+
about = {}
|
8
|
+
with open(os.path.join("tme", "__version__.py"), mode="r") as f:
|
9
|
+
exec(f.read(), about)
|
10
|
+
__version__ = about["__version__"]
|
11
|
+
|
12
|
+
if platform.processor() in ("arm", "i386"):
|
13
|
+
c_args = ["-O3", "-ftree-vectorize", "-std=c17"]
|
14
|
+
cpp_args = [
|
15
|
+
"-O3",
|
16
|
+
"-ftree-vectorize",
|
17
|
+
"-std=c++11",
|
18
|
+
"-funroll-loops",
|
19
|
+
"-ffast-math",
|
20
|
+
]
|
21
|
+
else:
|
22
|
+
c_args = ["-O3", "-march=native", "-std=c17"]
|
23
|
+
cpp_args = [
|
24
|
+
"-O3",
|
25
|
+
"-march=native",
|
26
|
+
"-std=c++11",
|
27
|
+
"-funroll-loops",
|
28
|
+
"-ffast-math",
|
29
|
+
]
|
30
|
+
|
31
|
+
ext_modules = [
|
32
|
+
Pybind11Extension(
|
33
|
+
"tme.extensions",
|
34
|
+
["tme/external/bindings.cpp"],
|
35
|
+
define_macros=[("VERSION_INFO", __version__)],
|
36
|
+
extra_compile_args=cpp_args,
|
37
|
+
),
|
38
|
+
]
|
39
|
+
|
40
|
+
package_data = {
|
41
|
+
"tme": [
|
42
|
+
os.path.join("data", "*.npy"),
|
43
|
+
os.path.join("data", "metadata.yaml"),
|
44
|
+
os.path.join("data", "scattering_factors.pickle"),
|
45
|
+
],
|
46
|
+
"tests": ["data/Blurring/*", "data/Structures/*", "data/Raw/*", "data/Maps/*"],
|
47
|
+
}
|
48
|
+
setup(
|
49
|
+
name="pytme",
|
50
|
+
author="Valentin Maurer",
|
51
|
+
author_email="valentin.maurer@embl-hamburg.de",
|
52
|
+
version=__version__,
|
53
|
+
description="Data-intensive n-dimensional template matching using CPUs and GPUs.",
|
54
|
+
package_data=package_data,
|
55
|
+
packages=find_packages(),
|
56
|
+
scripts=[
|
57
|
+
"scripts/match_template.py",
|
58
|
+
"scripts/estimate_ram_usage.py",
|
59
|
+
"scripts/preprocessor_gui.py",
|
60
|
+
"scripts/preprocess.py",
|
61
|
+
"scripts/postprocess.py",
|
62
|
+
],
|
63
|
+
ext_modules=ext_modules,
|
64
|
+
cmdclass={"build_ext": build_ext},
|
65
|
+
)
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|