pynbody.filt.Annulus#
- class pynbody.filt.Annulus(r1: float | str | UnitBase, r2: float | str | UnitBase, cen: _Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | bytes | str | _NestedSequence[complex | bytes | str] = (0, 0, 0))[source]#
Bases:
AndA filter that selects particles in between two spheres specified by radii r1 and r2 centered on cen.
Methods
__call__(sim)Return a boolean mask indicating which particles are in the filter.
cubic_cell_intersection(centroids)Compute the intersection with cubic cells with the specified centroids.
where(sim)Return the indices of particles that are in the filter.
- __init__(r1: float | str | UnitBase, r2: float | str | UnitBase, cen: _Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | bytes | str | _NestedSequence[complex | bytes | str] = (0, 0, 0))[source]#
Create an annulus filter.
- Parameters:
r1 – The inner radius of the annulus. If a string, it is interpreted as a unit string.
r2 – The outer radius of the annulus. If a string, it is interpreted as a unit string.
cen – The centre of the annulus. If a
pynbody.snapshot.simsnap.SimArray, units can be provided and will be correctly accounted for.
- cubic_cell_intersection(centroids)#
Compute the intersection with cubic cells with the specified centroids.
This is currently used by the swift loader to figure out which cells to load
- where(sim: snapshot.SimSnap)#
Return the indices of particles that are in the filter.
This is a convenience method that is equivalent to np.where(f(sim)) but may be more efficient for some filters.