Skip to content

[BUG] gizmo frontend fails on empty particle chunks in creation_time field #5439

Description

@chummels

I attempted to add a young_stars particle 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 the creation_time field was not populated and it led to an error.

My code:

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'))

Traceback:

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

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions