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.
Files changed (118) hide show
  1. {pytme-0.2.3 → pytme-0.2.4}/MANIFEST.in +6 -0
  2. {pytme-0.2.3 → pytme-0.2.4}/PKG-INFO +1 -1
  3. {pytme-0.2.3 → pytme-0.2.4}/pyproject.toml +2 -2
  4. {pytme-0.2.3 → pytme-0.2.4}/pytme.egg-info/SOURCES.txt +45 -2
  5. {pytme-0.2.3 → pytme-0.2.4}/scripts/match_template.py +8 -8
  6. {pytme-0.2.3 → pytme-0.2.4}/scripts/preprocess.py +22 -6
  7. {pytme-0.2.3 → pytme-0.2.4}/scripts/preprocessor_gui.py +9 -14
  8. pytme-0.2.4/setup.py +65 -0
  9. pytme-0.2.4/tests/data/.DS_Store +0 -0
  10. pytme-0.2.4/tests/data/Blurring/.DS_Store +0 -0
  11. pytme-0.2.4/tests/data/Blurring/blob_width18.npy +0 -0
  12. pytme-0.2.4/tests/data/Blurring/edgegaussian_sigma3.npy +0 -0
  13. pytme-0.2.4/tests/data/Blurring/gaussian_sigma2.npy +0 -0
  14. pytme-0.2.4/tests/data/Blurring/hamming_width6.npy +0 -0
  15. pytme-0.2.4/tests/data/Blurring/kaiserb_width18.npy +0 -0
  16. pytme-0.2.4/tests/data/Blurring/localgaussian_sigma0510.npy +0 -0
  17. pytme-0.2.4/tests/data/Blurring/mean_size5.npy +0 -0
  18. pytme-0.2.4/tests/data/Blurring/ntree_sigma0510.npy +0 -0
  19. pytme-0.2.4/tests/data/Blurring/rank_rank3.npy +0 -0
  20. pytme-0.2.4/tests/data/Maps/.DS_Store +0 -0
  21. pytme-0.2.4/tests/data/Maps/emd_8621.mrc.gz +0 -0
  22. pytme-0.2.4/tests/data/README.md +2 -0
  23. pytme-0.2.4/tests/data/Raw/.DS_Store +0 -0
  24. pytme-0.2.4/tests/data/Raw/em_map.map +0 -0
  25. pytme-0.2.4/tests/data/Structures/.DS_Store +0 -0
  26. pytme-0.2.4/tests/data/Structures/1pdj.cif +3339 -0
  27. pytme-0.2.4/tests/data/Structures/1pdj.pdb +1429 -0
  28. pytme-0.2.4/tests/data/Structures/5khe.cif +3685 -0
  29. pytme-0.2.4/tests/data/Structures/5khe.ent +2210 -0
  30. pytme-0.2.4/tests/data/Structures/5khe.pdb +2210 -0
  31. pytme-0.2.4/tests/data/Structures/5uz4.cif +70548 -0
  32. pytme-0.2.4/tests/preprocessing/__init__.py +0 -0
  33. pytme-0.2.4/tests/preprocessing/test_compose.py +76 -0
  34. pytme-0.2.4/tests/preprocessing/test_frequency_filters.py +178 -0
  35. pytme-0.2.4/tests/preprocessing/test_preprocessor.py +136 -0
  36. pytme-0.2.4/tests/preprocessing/test_utils.py +79 -0
  37. pytme-0.2.4/tests/test_analyzer.py +310 -0
  38. pytme-0.2.4/tests/test_backends.py +375 -0
  39. pytme-0.2.4/tests/test_density.py +508 -0
  40. pytme-0.2.4/tests/test_extensions.py +130 -0
  41. pytme-0.2.4/tests/test_matching_cli.py +283 -0
  42. pytme-0.2.4/tests/test_matching_data.py +162 -0
  43. pytme-0.2.4/tests/test_matching_exhaustive.py +162 -0
  44. pytme-0.2.4/tests/test_matching_memory.py +30 -0
  45. pytme-0.2.4/tests/test_matching_optimization.py +276 -0
  46. pytme-0.2.4/tests/test_matching_utils.py +326 -0
  47. pytme-0.2.4/tests/test_orientations.py +173 -0
  48. pytme-0.2.4/tests/test_packaging.py +95 -0
  49. pytme-0.2.4/tests/test_parser.py +33 -0
  50. pytme-0.2.4/tests/test_structure.py +243 -0
  51. {pytme-0.2.3 → pytme-0.2.4}/tme/__init__.py +0 -1
  52. pytme-0.2.4/tme/__version__.py +1 -0
  53. {pytme-0.2.3 → pytme-0.2.4}/tme/backends/jax_backend.py +8 -7
  54. pytme-0.2.4/tme/data/__init__.py +0 -0
  55. pytme-0.2.4/tme/data/scattering_factors.pickle +0 -0
  56. {pytme-0.2.3 → pytme-0.2.4}/tme/density.py +11 -4
  57. {pytme-0.2.3 → pytme-0.2.4}/tme/matching_data.py +11 -9
  58. {pytme-0.2.3 → pytme-0.2.4}/tme/matching_exhaustive.py +10 -8
  59. {pytme-0.2.3 → pytme-0.2.4}/tme/matching_utils.py +1 -0
  60. {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/_utils.py +14 -14
  61. {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/composable_filter.py +0 -2
  62. {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/compose.py +4 -4
  63. {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/frequency_filters.py +32 -35
  64. {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/tilt_series.py +202 -118
  65. {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessor.py +24 -246
  66. {pytme-0.2.3 → pytme-0.2.4}/tme/structure.py +14 -14
  67. pytme-0.2.3/setup.py +0 -65
  68. pytme-0.2.3/tme/__version__.py +0 -1
  69. pytme-0.2.3/tme/matching_memory.py +0 -383
  70. {pytme-0.2.3 → pytme-0.2.4}/LICENSE +0 -0
  71. {pytme-0.2.3 → pytme-0.2.4}/README.md +0 -0
  72. {pytme-0.2.3 → pytme-0.2.4}/scripts/__init__.py +0 -0
  73. {pytme-0.2.3 → pytme-0.2.4}/scripts/estimate_ram_usage.py +0 -0
  74. {pytme-0.2.3 → pytme-0.2.4}/scripts/eval.py +0 -0
  75. {pytme-0.2.3 → pytme-0.2.4}/scripts/extract_candidates.py +0 -0
  76. {pytme-0.2.3 → pytme-0.2.4}/scripts/match_template_filters.py +0 -0
  77. {pytme-0.2.3 → pytme-0.2.4}/scripts/postprocess.py +0 -0
  78. {pytme-0.2.3 → pytme-0.2.4}/scripts/refine_matches.py +0 -0
  79. {pytme-0.2.3 → pytme-0.2.4}/setup.cfg +0 -0
  80. {pytme-0.2.3/tme/data → pytme-0.2.4/tests}/__init__.py +0 -0
  81. {pytme-0.2.3 → pytme-0.2.4}/tme/analyzer.py +0 -0
  82. {pytme-0.2.3 → pytme-0.2.4}/tme/backends/__init__.py +0 -0
  83. {pytme-0.2.3 → pytme-0.2.4}/tme/backends/_jax_utils.py +0 -0
  84. {pytme-0.2.3 → pytme-0.2.4}/tme/backends/cupy_backend.py +0 -0
  85. {pytme-0.2.3 → pytme-0.2.4}/tme/backends/matching_backend.py +0 -0
  86. {pytme-0.2.3 → pytme-0.2.4}/tme/backends/mlx_backend.py +0 -0
  87. {pytme-0.2.3 → pytme-0.2.4}/tme/backends/npfftw_backend.py +0 -0
  88. {pytme-0.2.3 → pytme-0.2.4}/tme/backends/pytorch_backend.py +0 -0
  89. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48n309.npy +0 -0
  90. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48n527.npy +0 -0
  91. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48n9.npy +0 -0
  92. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u1.npy +0 -0
  93. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u1153.npy +0 -0
  94. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u1201.npy +0 -0
  95. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u1641.npy +0 -0
  96. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u181.npy +0 -0
  97. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u2219.npy +0 -0
  98. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u27.npy +0 -0
  99. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u2947.npy +0 -0
  100. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u3733.npy +0 -0
  101. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u4749.npy +0 -0
  102. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u5879.npy +0 -0
  103. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u7111.npy +0 -0
  104. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u815.npy +0 -0
  105. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u83.npy +0 -0
  106. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c48u8649.npy +0 -0
  107. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c600v.npy +0 -0
  108. {pytme-0.2.3 → pytme-0.2.4}/tme/data/c600vc.npy +0 -0
  109. {pytme-0.2.3 → pytme-0.2.4}/tme/data/metadata.yaml +0 -0
  110. {pytme-0.2.3 → pytme-0.2.4}/tme/data/quat_to_numpy.py +0 -0
  111. /pytme-0.2.3/src/extensions.cpp → /pytme-0.2.4/tme/external/bindings.cpp +0 -0
  112. {pytme-0.2.3 → pytme-0.2.4}/tme/matching_optimization.py +0 -0
  113. {pytme-0.2.3 → pytme-0.2.4}/tme/matching_scores.py +0 -0
  114. {pytme-0.2.3 → pytme-0.2.4}/tme/memory.py +0 -0
  115. {pytme-0.2.3 → pytme-0.2.4}/tme/orientations.py +0 -0
  116. {pytme-0.2.3 → pytme-0.2.4}/tme/parser.py +0 -0
  117. {pytme-0.2.3 → pytme-0.2.4}/tme/preprocessing/__init__.py +0 -0
  118. {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 *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pytme
3
- Version: 0.2.3
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>
@@ -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.3"
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
- "tme/tests/*"
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
- src/extensions.cpp
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=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
- recommended_box = be.compute_convolution_shapes([args.box_size], [1])[1][0]
99
- if recommended_box != args.box_size:
100
- warnings.warn(
101
- f"Consider using --box_size {recommended_box} instead of {args.box_size}."
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
- extrude_plane: bool = True,
489
- infinite_plane: bool = True,
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
- start_tilt=tilt_start,
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
- sigma=gaussian_sigma,
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
@@ -0,0 +1,2 @@
1
+ Test data was derived from EMD-8249
2
+ https://www.ebi.ac.uk/pdbe/entry/emdb/EMD-8249
Binary file
Binary file