import yt
def young_stars(pfilter, data):
age = data[pfilter.filtered_type, "age"]
filter = age.in_units("Myr") <= 10
return filter
yt.add_particle_filter("young_stars", function=young_stars, filtered_type="PartType4", requires=["age"])
ds = yt.load_sample('FIRE_M12i_ref11')
ds.add_particle_filter("young_stars")
ad = ds.all_data()
print(ad.quantities.center_of_mass(use_gas=False, use_particles=True, particle_type='young_stars'))
yt : [INFO ] 2026-04-24 12:54:03,403 Sample dataset found in '/Users/chummels/src/yt-data/FIRE_M12i_ref11/snapshot_600.hdf5'
yt : [INFO ] 2026-04-24 12:54:03,484 ComovingIntegrationOn does not exist, falling back to OmegaLambda
yt : [INFO ] 2026-04-24 12:54:03,487 Calculating time from 1.000e+00 to be 4.355e+17 seconds
yt : [INFO ] 2026-04-24 12:54:03,487 Assuming length units are in kpc/h (comoving)
yt : [INFO ] 2026-04-24 12:54:03,509 Parameters: current_time = 4.35455710880514e+17 s
yt : [INFO ] 2026-04-24 12:54:03,509 Parameters: domain_dimensions = [1 1 1]
yt : [INFO ] 2026-04-24 12:54:03,509 Parameters: domain_left_edge = [0. 0. 0.]
yt : [INFO ] 2026-04-24 12:54:03,509 Parameters: domain_right_edge = [60000. 60000. 60000.]
yt : [INFO ] 2026-04-24 12:54:03,509 Parameters: cosmological_simulation = True
yt : [INFO ] 2026-04-24 12:54:03,509 Parameters: current_redshift = 0.0
yt : [INFO ] 2026-04-24 12:54:03,509 Parameters: omega_lambda = 0.728
yt : [INFO ] 2026-04-24 12:54:03,509 Parameters: omega_matter = 0.272
yt : [INFO ] 2026-04-24 12:54:03,509 Parameters: omega_radiation = 0.0
yt : [INFO ] 2026-04-24 12:54:03,509 Parameters: hubble_constant = 0.702
yt : [INFO ] 2026-04-24 12:54:03,513 Allocating for 4.787e+06 particles
Loading particle index: 0%| | 0/10 [00:00<?, ?it/s]
Loading particle index: 100%|██████████| 10/10 [00:00<00:00, 11573.69it/s]
True
Traceback (most recent call last):
File "/Users/chummels/scratch/YoungStarsFilter/test.py", line 13, in <module>
print(ad.quantities.center_of_mass(use_gas=False, use_particles=True, particle_type='young_stars'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/data_objects/derived_quantities.py", line 55, in __call__
sto.result = self.process_chunk(ds, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/data_objects/derived_quantities.py", line 269, in process_chunk
vals += [
^
File "/Users/chummels/src/yt/yt/data_objects/derived_quantities.py", line 271, in <listcomp>
data[particle_type, f"particle_position_{ax}"]
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/data_objects/data_containers.py", line 248, in __getitem__
self.get_data(f)
File "/Users/chummels/src/yt/yt/data_objects/selection_objects/data_selection_objects.py", line 160, in get_data
with f.apply(self):
File "/Users/chummels/miniconda3/lib/python3.11/contextlib.py", line 137, in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/data_objects/particle_filters.py", line 33, in apply
filter = self.function(self, dobj)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/scratch/YoungStarsFilter/test.py", line 4, in young_stars
age = data[pfilter.filtered_type, "age"]
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/data_objects/data_containers.py", line 248, in __getitem__
self.get_data(f)
File "/Users/chummels/src/yt/yt/data_objects/selection_objects/data_selection_objects.py", line 220, in get_data
self._generate_fields(fields_to_generate)
File "/Users/chummels/src/yt/yt/data_objects/selection_objects/data_selection_objects.py", line 285, in _generate_fields
fd = self._generate_field(field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/data_objects/data_containers.py", line 291, in _generate_field
tr = self._generate_particle_field(field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/data_objects/data_containers.py", line 396, in _generate_particle_field
rv = self.ds._get_field_info(field)(gen_obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/fields/derived_field.py", line 464, in __call__
dd = self._eval(data)
^^^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/fields/derived_field.py", line 483, in _eval
return self._function(data)
^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/frontends/gizmo/fields.py", line 154, in _creation_time
creation_time = data.ds.cosmology.t_from_z(z_form)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/utilities/cosmology.py", line 499, in t_from_z
return self.t_from_a(1.0 / (1.0 + z))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/src/yt/yt/utilities/cosmology.py", line 465, in t_from_a
la_i = min(-6, np.asarray(la).min() - 3)
^^^^^^^^^^^^^^^^^^^^
File "/Users/chummels/miniconda3/lib/python3.11/site-packages/numpy/_core/_methods.py", line 47, in _amin
return umr_minimum(a, axis, None, out, keepdims, initial, where)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: zero-size array to reduction operation minimum which has no identity
I attempted to add a
young_starsparticle filter to FIRE data and then run it on a sphere data object. It failed because there are some chunks in the dataset lacking any stars at all, so thecreation_timefield was not populated and it led to an error.My code:
Traceback: