Skip to content

Commit 04014c6

Browse files
authored
Hot fix: Correctly stack weights for variants in single orbit optimized case (#27)
1 parent 343a5da commit 04014c6

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/adam_assist/propagator.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)