@@ -222,6 +222,8 @@ def _propagate_single_orbit_inner_optimized(
222222 """
223223 Inner propagation optimized for exactly one orbit.
224224 """
225+ assert len (orbit ) == 1 , f"Expected exactly 1 orbit, got { len (orbit )} "
226+
225227 # Setup ephemeris and simulation
226228 ephem = assist .Ephem (planets_path = de440 , asteroids_path = de441_n16 )
227229 sim = rebound .Simulation ()
@@ -288,16 +290,18 @@ def _propagate_single_orbit_inner_optimized(
288290 )
289291
290292 if is_variant :
291- orbit_ids_out = [orbit_id ] * N
292- variant_ids_out = [variant_id ] * N
293- object_id_out = np .tile (orbit .object_id .to_numpy (zero_copy_only = False ), N )
293+ orbit_ids_out = pa .repeat (pc .cast (orbit_id , pa .large_string ()), N )
294+ variant_ids_out = pa .repeat (pc .cast (variant_id , pa .large_string ()), N )
295+ object_id_out = pa .repeat (orbit .object_id [0 ], N )
296+ weights_out = pa .repeat (orbit .weights [0 ], N )
297+ weights_cov_out = pa .repeat (orbit .weights_cov [0 ], N )
294298
295299 return VariantOrbits .from_kwargs (
296300 orbit_id = orbit_ids_out ,
297301 variant_id = variant_ids_out ,
298302 object_id = object_id_out ,
299- weights = orbit . weights ,
300- weights_cov = orbit . weights_cov ,
303+ weights = weights_out ,
304+ weights_cov = weights_cov_out ,
301305 coordinates = CartesianCoordinates .from_kwargs (
302306 x = xyzvxvyvz [:, 0 ],
303307 y = xyzvxvyvz [:, 1 ],
@@ -311,8 +315,8 @@ def _propagate_single_orbit_inner_optimized(
311315 ),
312316 )
313317 else :
314- orbit_ids_out = [ orbit_id ] * N
315- object_id_out = np . tile (orbit .object_id . to_numpy ( zero_copy_only = False ) , N )
318+ orbit_ids_out = pa . repeat ( pc . cast ( orbit_id , pa . large_string ()), N )
319+ object_id_out = pa . repeat (orbit .object_id [ 0 ] , N )
316320
317321 return Orbits .from_kwargs (
318322 coordinates = CartesianCoordinates .from_kwargs (
0 commit comments