@@ -295,13 +295,17 @@ def _propagate_single_orbit_inner_optimized(
295295 object_id_out = pa .repeat (orbit .object_id [0 ], N )
296296 weights_out = pa .repeat (orbit .weights [0 ], N )
297297 weights_cov_out = pa .repeat (orbit .weights_cov [0 ], N )
298+ physical_parameters_out = orbit .physical_parameters .take (
299+ np .zeros (N , dtype = np .int64 )
300+ )
298301
299302 return VariantOrbits .from_kwargs (
300303 orbit_id = orbit_ids_out ,
301304 variant_id = variant_ids_out ,
302305 object_id = object_id_out ,
303306 weights = weights_out ,
304307 weights_cov = weights_cov_out ,
308+ physical_parameters = physical_parameters_out ,
305309 coordinates = CartesianCoordinates .from_kwargs (
306310 x = xyzvxvyvz [:, 0 ],
307311 y = xyzvxvyvz [:, 1 ],
@@ -317,6 +321,9 @@ def _propagate_single_orbit_inner_optimized(
317321 else :
318322 orbit_ids_out = pa .repeat (pc .cast (orbit_id , pa .large_string ()), N )
319323 object_id_out = pa .repeat (orbit .object_id [0 ], N )
324+ physical_parameters_out = orbit .physical_parameters .take (
325+ np .zeros (N , dtype = np .int64 )
326+ )
320327
321328 return Orbits .from_kwargs (
322329 coordinates = CartesianCoordinates .from_kwargs (
@@ -332,6 +339,7 @@ def _propagate_single_orbit_inner_optimized(
332339 ),
333340 orbit_id = orbit_ids_out ,
334341 object_id = object_id_out ,
342+ physical_parameters = physical_parameters_out ,
335343 )
336344
337345 def _propagate_orbits_inner (
@@ -462,13 +470,17 @@ def _propagate_orbits_inner(
462470 weights_cov_out = np .tile (
463471 orbits .weights_cov .to_numpy (zero_copy_only = False ), num_steps
464472 )
473+ physical_parameters_out = orbits .physical_parameters .take (
474+ np .tile (np .arange (len (orbits ), dtype = np .int64 ), num_steps )
475+ )
465476
466477 results = VariantOrbits .from_kwargs (
467478 orbit_id = orbit_ids_out ,
468479 variant_id = variant_ids_out ,
469480 object_id = object_id_out ,
470481 weights = weights_out ,
471482 weights_cov = weights_cov_out ,
483+ physical_parameters = physical_parameters_out ,
472484 coordinates = CartesianCoordinates .from_kwargs (
473485 x = xyzvxvyvz [:, 0 ],
474486 y = xyzvxvyvz [:, 1 ],
@@ -487,6 +499,10 @@ def _propagate_orbits_inner(
487499 orbits .object_id .to_numpy (zero_copy_only = False ),
488500 len (integrator_times ),
489501 )
502+ num_steps = len (integrator_times )
503+ physical_parameters_out = orbits .physical_parameters .take (
504+ np .tile (np .arange (len (orbits ), dtype = np .int64 ), num_steps )
505+ )
490506
491507 results = Orbits .from_kwargs (
492508 coordinates = CartesianCoordinates .from_kwargs (
@@ -502,6 +518,7 @@ def _propagate_orbits_inner(
502518 ),
503519 orbit_id = orbit_ids_out ,
504520 object_id = object_id_out ,
521+ physical_parameters = physical_parameters_out ,
505522 )
506523
507524 # Store the last simulation in a private variable for reference
@@ -656,6 +673,7 @@ def _detect_collisions(
656673 ),
657674 orbit_id = orbit_ids ,
658675 object_id = orbits .object_id ,
676+ physical_parameters = orbits .physical_parameters ,
659677 )
660678 elif isinstance (orbits , VariantOrbits ):
661679 # Retrieve the orbit id and weights from hash
@@ -676,6 +694,7 @@ def _detect_collisions(
676694 object_id = orbits .object_id ,
677695 weights = orbits .weights ,
678696 weights_cov = orbits .weights_cov ,
697+ physical_parameters = orbits .physical_parameters ,
679698 coordinates = CartesianCoordinates .from_kwargs (
680699 x = step_xyzvxvyvz [:, 0 ],
681700 y = step_xyzvxvyvz [:, 1 ],
0 commit comments