@@ -217,6 +217,7 @@ def compute(
217
217
self ,
218
218
systems : Union [IntoSystem , List [IntoSystem ]],
219
219
selected_keys : Optional [Labels ] = None ,
220
+ selected_samples : Optional [Labels ] = None ,
220
221
neighbors_to_properties : bool = False ,
221
222
) -> TensorMap :
222
223
"""
@@ -245,6 +246,11 @@ def compute(
245
246
:param selected_keys: :py:class:`Labels`, the output keys to computed. If
246
247
``None``, all keys are computed. Subsets of key dimensions can be passed to
247
248
compute output blocks that match in these dimensions.
249
+ :param selected_samples: :py:class:`Labels`, Set of samples on which to run the
250
+ calculation. Use ``None`` to run the calculation on all samples in
251
+ the systems (this is the default). Gets passed to ``calculator_1`` and
252
+ ``calculator_2``, therefore requiring that both calculators support sample
253
+ selection.
248
254
:param neighbors_to_properties: :py:class:`bool`, if true, densifies the
249
255
spherical expansion by moving key dimension "neighbor_type" to properties
250
256
prior to performing the Clebsch Gordan product step. Defaults to false.
@@ -254,6 +260,7 @@ def compute(
254
260
return self ._equivariant_power_spectrum (
255
261
systems = systems ,
256
262
selected_keys = selected_keys ,
263
+ selected_samples = selected_samples ,
257
264
neighbors_to_properties = neighbors_to_properties ,
258
265
compute_metadata = False ,
259
266
)
@@ -262,6 +269,7 @@ def forward(
262
269
self ,
263
270
systems : Union [IntoSystem , List [IntoSystem ]],
264
271
selected_keys : Optional [Labels ] = None ,
272
+ selected_samples : Optional [Labels ] = None ,
265
273
neighbors_to_properties : bool = False ,
266
274
) -> TensorMap :
267
275
"""
@@ -275,13 +283,15 @@ def forward(
275
283
return self .compute (
276
284
systems = systems ,
277
285
selected_keys = selected_keys ,
286
+ selected_samples = selected_samples ,
278
287
neighbors_to_properties = neighbors_to_properties ,
279
288
)
280
289
281
290
def compute_metadata (
282
291
self ,
283
292
systems : Union [IntoSystem , List [IntoSystem ]],
284
293
selected_keys : Optional [Labels ] = None ,
294
+ selected_samples : Optional [Labels ] = None ,
285
295
neighbors_to_properties : bool = False ,
286
296
) -> TensorMap :
287
297
"""
@@ -294,6 +304,7 @@ def compute_metadata(
294
304
return self ._equivariant_power_spectrum (
295
305
systems = systems ,
296
306
selected_keys = selected_keys ,
307
+ selected_samples = selected_samples ,
297
308
neighbors_to_properties = neighbors_to_properties ,
298
309
compute_metadata = True ,
299
310
)
@@ -302,19 +313,24 @@ def _equivariant_power_spectrum(
302
313
self ,
303
314
systems : Union [IntoSystem , List [IntoSystem ]],
304
315
selected_keys : Optional [Labels ],
316
+ selected_samples : Optional [Labels ],
305
317
neighbors_to_properties : bool ,
306
318
compute_metadata : bool ,
307
319
) -> TensorMap :
308
320
"""
309
321
Computes the equivariant power spectrum, either fully or just metadata
310
322
"""
311
323
# Compute density
312
- density_1 = self .calculator_1 .compute (systems )
324
+ density_1 = self .calculator_1 .compute (
325
+ systems , selected_samples = selected_samples
326
+ )
313
327
314
328
if self .calculator_2 is None :
315
329
density_2 = density_1
316
330
else :
317
- density_2 = self .calculator_2 .compute (systems )
331
+ density_2 = self .calculator_2 .compute (
332
+ systems , selected_samples = selected_samples
333
+ )
318
334
319
335
# Rename "neighbor_type" dimension so they are correlated
320
336
density_1 = operations .rename_dimension (
0 commit comments