From 2427653e61cfebc9d75b9c2c5ede9e931d193c36 Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Mon, 29 Jun 2026 12:55:03 -0700 Subject: [PATCH 01/20] Same as upstream puffer 4.0 but with mac os fix. --- build.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index 5a7c94db80..fb499cec4d 100755 --- a/build.sh +++ b/build.sh @@ -142,8 +142,14 @@ OUTPUT_NAME=${OUTPUT_NAME:-$ENV} # Standalone environment build # -mavx2 enables AVX2 intrinsics (__m256, _mm256_*) which drive.h and -# src/bf16.h use directly. x86_64 only — strip if porting to ARM/Apple Silicon. -SIMD_FLAGS=(-mavx2 -mfma) +# src/bf16.h use directly. x86_64 only; skip on ARM (Apple Silicon). +ARCH_NAME="$(uname -m)" +if [ "$ARCH_NAME" = "x86_64" ]; then + SIMD_FLAGS=(-mavx2 -mfma) +else + SIMD_FLAGS=() +fi + if [ -n "$DEBUG" ] || [ "$MODE" = "local" ]; then CLANG_OPT=(-g -O0 "${CLANG_WARN[@]}" "${SANITIZE_FLAGS[@]}" "${SIMD_FLAGS[@]}") NVCC_OPT="-O0 -g" @@ -160,7 +166,7 @@ if [ "$MODE" = "local" ] || [ "$MODE" = "fast" ]; then "${LINK_ARCHIVES[@]}" "${EXTRA_LDFLAGS[@]}" "${STANDALONE_LDFLAGS[@]}" - -lm -lpthread -fopenmp + -lm -lpthread -DPLATFORM_DESKTOP ) echo "Compiling $ENV..." From b76a719828d0035bd66a4fb517b208dcfef3bee2 Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Tue, 28 Jul 2026 17:56:48 -0700 Subject: [PATCH 02/20] Initial port. --- .gitignore | 5 +- config/electric_fish.ini | 30 + ocean/electric_fish/binding.c | 34 + ocean/electric_fish/electric_fish.c | 119 ++ ocean/electric_fish/electric_fish.h | 1636 +++++++++++++++++++++++++++ tests/test_electric_fish_physics.py | 50 + uv.lock | 1567 +++++++++++++++++++++++++ 7 files changed, 3440 insertions(+), 1 deletion(-) create mode 100644 config/electric_fish.ini create mode 100644 ocean/electric_fish/binding.c create mode 100644 ocean/electric_fish/electric_fish.c create mode 100644 ocean/electric_fish/electric_fish.h create mode 100644 tests/test_electric_fish_physics.py create mode 100644 uv.lock diff --git a/.gitignore b/.gitignore index b01c266e47..452375262d 100644 --- a/.gitignore +++ b/.gitignore @@ -47,6 +47,10 @@ MANIFEST # Mac files .DS_Store +*.dSYM/ + +# Standalone native environment executables +/electric_fish # PyInstaller # Usually these files are written by a python script from a template @@ -171,4 +175,3 @@ pufferlib/ocean/impulse_wars/benchmark/ # Data resources/drive/data/* resources/drive/binaries/* - diff --git a/config/electric_fish.ini b/config/electric_fish.ini new file mode 100644 index 0000000000..429a68f0ec --- /dev/null +++ b/config/electric_fish.ini @@ -0,0 +1,30 @@ +[base] +env_name = electric_fish + +[vec] +total_agents = 4096 +num_buffers = 8 +num_threads = 8 + +[policy] +num_layers = 1 +hidden_size = 128 + +[env] +num_agents = 4 +# Set min=max for evaluation; use 40 and 300 for paper-style training. +min_arena_width = 70 +max_arena_width = 70 +min_arena_height = 70 +max_arena_height = 70 +# 0=uniform, 1=patchy, 2=n_patch, 3=one_patch, 4=random +food_distribution = 4 +num_food = 64 +# N-patch parameters. Patchy and one-patch use the radius parameters. +num_patches = 4 +patch_radius = 6 +patch_radius_std = 1.5 +patch_density = 0.001 +placement_radius_frac = 0.75 +electric_field_radius = 15 +max_steps = 4096 diff --git a/ocean/electric_fish/binding.c b/ocean/electric_fish/binding.c new file mode 100644 index 0000000000..8b7a7fa38c --- /dev/null +++ b/ocean/electric_fish/binding.c @@ -0,0 +1,34 @@ +#include "electric_fish.h" + +#define NUM_ATNS FISH_ACTION_SIZE +#define ACT_SIZES {1, 1, 1, 1} +#define OBS_TENSOR_T FloatTensor + +#define Env FishEnv +#include "vecenv.h" + +void my_init(Env* env, Dict* kwargs) { + env->num_agents = (int)dict_get(kwargs, "num_agents")->value; + env->min_arena_size_cm.x = dict_get(kwargs, "min_arena_width")->value; + env->min_arena_size_cm.y = dict_get(kwargs, "min_arena_height")->value; + env->max_arena_size_cm.x = dict_get(kwargs, "max_arena_width")->value; + env->max_arena_size_cm.y = dict_get(kwargs, "max_arena_height")->value; + env->arena_size_cm = env->min_arena_size_cm; + env->food_distribution = (FoodDistribution)(int)dict_get(kwargs, "food_distribution")->value; + env->configured_num_food = (int)dict_get(kwargs, "num_food")->value; + env->fixed_num_patches = (int)dict_get(kwargs, "num_patches")->value; + env->patch_radius_cm = dict_get(kwargs, "patch_radius")->value; + env->patch_radius_std_cm = dict_get(kwargs, "patch_radius_std")->value; + env->patch_density = dict_get(kwargs, "patch_density")->value; + env->placement_radius_frac = dict_get(kwargs, "placement_radius_frac")->value; + env->electric_field_radius_cm = dict_get(kwargs, "electric_field_radius")->value; + env->max_steps = (int)dict_get(kwargs, "max_steps")->value; + init(env); +} + +void my_log(Log* log, Dict* out) { + dict_set(out, "perf", log->perf); + dict_set(out, "score", log->score); + dict_set(out, "episode_return", log->episode_return); + dict_set(out, "episode_length", log->episode_length); +} diff --git a/ocean/electric_fish/electric_fish.c b/ocean/electric_fish/electric_fish.c new file mode 100644 index 0000000000..51d31a46d2 --- /dev/null +++ b/ocean/electric_fish/electric_fish.c @@ -0,0 +1,119 @@ +/* + * Standalone random-policy demo. + * + * Build: + * ./build.sh electric_fish --local + * Run: + * ./electric_fish + */ + +#include +#include +#include "electric_fish.h" + +static float random_action(unsigned int* rng) { + return 2.0f * (float)rand_r(rng) / (float)RAND_MAX - 1.0f; +} + +static void print_physics_fixture(FishEnv* env) { + env->num_agents = 2; + env->num_food = 1; + env->agents[0].movement.position_cm = (FishVec2){20.0, 20.0}; + env->agents[0].movement.orientation = 0.25; + env->agents[0].emits_eod = true; + env->agents[1].movement.position_cm = (FishVec2){45.0, 40.0}; + env->agents[1].movement.orientation = -1.0; + env->agents[1].emits_eod = false; + env->food[0].motion.position_cm = (FishVec2){30.0, 25.0}; + env->food[0].motion.orientation = 0.7; + env->food[0].active = true; + calibrate_electroreceptors(env); + build_electric_scene(env); + + FishVec2 query = {35.0, 30.0}; + FishVec2 eod = fish_measure_electric_field_with_reflections( + query, env->eod_sources, 4, NULL, 0, + env->arena_size_cm, FISH_FIELD_EPS_M, + FISH_REFLECTION_SCALE, false + ); + FishVec2 intrinsic = fish_measure_electric_field_with_reflections( + query, NULL, 0, env->intrinsic_sources, + (size_t)env->num_intrinsic_sources, + env->arena_size_cm, FISH_FIELD_EPS_M, + FISH_REFLECTION_SCALE, false + ); + FishVec2 induced = fish_measure_electric_field_with_reflections( + query, NULL, 0, env->induced_sources, + (size_t)env->num_induced_sources, + env->arena_size_cm, FISH_FIELD_EPS_M, + FISH_REFLECTION_SCALE, false + ); + printf( + "{\"eod\":[%.17g,%.17g],\"intrinsic\":[%.17g,%.17g]," + "\"induced\":[%.17g,%.17g],\"induced_fish\":[%.17g,%.17g]," + "\"induced_food\":[%.17g,%.17g],\"morm_cd0\":%.17g," + "\"amp_baseline0\":%.17g}\n", + eod.x, eod.y, intrinsic.x, intrinsic.y, induced.x, induced.y, + env->induced_sources[1].moment_c_m.x, + env->induced_sources[1].moment_c_m.y, + env->induced_sources[2].moment_c_m.x, + env->induced_sources[2].moment_c_m.y, + env->mormyromast_cd[0], env->amp_intrinsic_baseline[0] + ); +} + +int main(int argc, char** argv) { + FishEnv env = { + .num_agents = 4, + .arena_size_cm = {70.0, 70.0}, + .electric_field_radius_cm = 15.0, + .max_steps = 4096, + .rng = (unsigned int)time(NULL), + }; + c_allocate(&env); + c_reset(&env); + + if (argc > 1 && strcmp(argv[1], "--physics-fixture") == 0) { + print_physics_fixture(&env); + free_allocated(&env); + return 0; + } + + unsigned int demo_rng = env.rng ^ 0x9e3779b9U; + float target_actions[MAX_AGENTS][FISH_ACTION_SIZE] = {{0}}; + bool headless = argc > 1 && strcmp(argv[1], "--headless") == 0; + + if (!headless) c_render(&env); + + while (headless ? env.tick < 1000 : !WindowShouldClose()) { + if (env.tick % 45 == 0) { + for (int i = 0; i < env.num_agents; i++) { + target_actions[i][0] = random_action(&demo_rng); + target_actions[i][1] = random_action(&demo_rng); + target_actions[i][2] = + rand_r(&demo_rng) % 100 < 35 ? 1.0f : -1.0f; + target_actions[i][3] = + rand_r(&demo_rng) % 100 < 8 ? 1.0f : -1.0f; + } + } + + /* Smooth random walk commands; EOD remains a discrete pulse action. */ + for (int i = 0; i < env.num_agents; i++) { + float* action = env.actions + i * FISH_ACTION_SIZE; + action[0] += 0.06f * (target_actions[i][0] - action[0]); + action[1] += 0.08f * (target_actions[i][1] - action[1]); + action[2] = target_actions[i][2]; + action[3] = target_actions[i][3]; + } + + c_step(&env); + if (!headless) c_render(&env); + } + + if (headless) { + printf("electric_fish headless smoke test: 1000 steps, %d food eaten\n", + env.food_eaten); + } + free_allocated(&env); + return 0; +} diff --git a/ocean/electric_fish/electric_fish.h b/ocean/electric_fish/electric_fish.h new file mode 100644 index 0000000000..d2f00b6a12 --- /dev/null +++ b/ocean/electric_fish/electric_fish.h @@ -0,0 +1,1636 @@ +/* + * Core mechanics and electrostatic biophysics for the weakly electric fish + * environment. + * + * This is a port of the biophysics simulation implemented in + * https://github.com/KempnerInstitute/wef + * onpolicy/custom/fish/movement.py + * onpolicy/custom/fish/electric.py + * onpolicy/custom/fish/electric_accelerated.py + * onpolicy/custom/fish/electric_scene.py + * + * Positions and radii use centimeters, matching the Python environment. + * Electric-field calculations convert positions to meters internally and + * return V/m. Dipole moments use C*m and monopole charges use C. + */ + +#include +#include +#include +#include +#include +#include +#include "raylib.h" + +// Constants +#define FISH_PI 3.14159265358979323846264338327950288 +#define FISH_CM_TO_M 0.01 +#define FISH_K_COULOMB 8.99e9 +#define FISH_EPSILON_0 8.854e-12 +#define FISH_FIELD_EPS_M 1e-5 +#define FISH_REFLECTION_SCALE 1.0 +#define FISH_SENSOR_EPS 1e-25 + +// Values from upstream cfg.py and Table 1 of the accompanying publication +#define FISH_SIMULATION_HZ 83.0 +#define FISH_BODY_RADIUS_CM 1.0 +#define FISH_FOOD_RADIUS_CM 0.25 +#define FISH_CONDUCTOR_CONTRAST (-0.5) +#define FISH_EOD_CHARGE_C 1.11e-15 +#define FISH_EOD_POLE_OFFSET_CM 0.5 +#define FISH_INTRINSIC_MOMENT_C_M 1.11e-23 +#define FISH_FOOD_INTRINSIC_MOMENT_C_M 1.11e-24 + +#define FISH_NUM_MORMYROMASTS 36 +#define FISH_NUM_AMPULLARY 24 +#define FISH_NUM_KNOLLEN 12 +#define MAX_AGENTS 4 +#define FISH_MAX_FOOD 64 +#define FISH_MAX_DIPOLE_SOURCES (2 * MAX_AGENTS + 2 * FISH_MAX_FOOD) +#define OBS_SIZE 110 +#define FISH_ACTION_SIZE 4 +#define FISH_EATING_RADIUS_CM 2.0 +#define FISH_BITING_RADIUS_CM 3.0 +#define FISH_EATING_ANGLE (FISH_PI / 4.0) +#define FISH_EAT_REWARD 10.0f +#define FISH_COLLISION_REWARD -0.5f +#define FISH_BITTEN_REWARD -5.0f +#define MAX_PATCHES 90 +#define TRACE_LENGTH 128 + +#define FISH_AMPULLARY_MIN_VM 2e-10 +#define FISH_AMPULLARY_MAX_VM 2e-8 +#define FISH_MORMYROMAST_MIN_VM 5e-8 +#define FISH_MORMYROMAST_MAX_VM 5e-2 +#define FISH_KNOLLEN_MIN_VM 2e-7 + +typedef struct FishVec2 { + double x; + double y; +} FishVec2; + +typedef struct FishMonopole { + FishVec2 position_cm; + double charge_c; +} FishMonopole; + +typedef struct FishDipole { + FishVec2 position_cm; + FishVec2 moment_c_m; +} FishDipole; + +typedef struct FishSensor { + FishVec2 position_cm; + FishVec2 normal; +} FishSensor; + +typedef enum FishMotionOrder { + FISH_MOTION_FIRST_ORDER = 1, + FISH_MOTION_SECOND_ORDER = 2, +} FishMotionOrder; + +typedef enum FishWall { + FISH_WALL_LEFT = 0, + FISH_WALL_RIGHT = 1, + FISH_WALL_BOTTOM = 2, + FISH_WALL_TOP = 3, +} FishWall; + +typedef struct FishMovement { + FishVec2 position_cm; + FishVec2 displacement_ground_cm; + FishVec2 displacement_ego_cm; + double orientation; + double last_orientation; + double linear_velocity; + double angular_velocity; + + double body_radius_cm; + double min_linear_velocity; + double max_linear_velocity; + double max_linear_acceleration; + double min_angular_velocity; + double max_angular_velocity; + double max_angular_acceleration; + double linear_drag_factor; + double angular_drag_factor; + + int motion_order; + bool backwards; + bool collided; +} FishMovement; + +typedef struct FishMotionProposal { + FishVec2 position_cm; + double orientation; + double linear_velocity; + double angular_velocity; +} FishMotionProposal; + +typedef struct FishFoodMotion { + FishVec2 position_cm; + FishVec2 velocity_cm; + double orientation; +} FishFoodMotion; + +static inline double fish_vec_length_squared(FishVec2 v) { + return v.x * v.x + v.y * v.y; +} + +static inline double fish_vec_length(FishVec2 v) { + return sqrt(fish_vec_length_squared(v)); +} + +static inline double fish_clamp(double value, double minimum, double maximum) { + return fmin(maximum, fmax(minimum, value)); +} + +/* Stable wrap to [-pi, pi], identical to movement._wrap_angle. */ +static inline double fish_wrap_angle(double angle) { + return atan2(sin(angle), cos(angle)); +} + +/* Rotate a vector; add translation separately when transforming a position. */ +static inline FishVec2 fish_rotate(FishVec2 v, double angle) { + double c = cos(angle); + double s = sin(angle); + return (FishVec2){c * v.x - s * v.y, s * v.x + c * v.y}; +} + +static inline FishVec2 fish_transform_position(FishVec2 local_cm, FishVec2 origin_cm, double angle) { + FishVec2 rotated = fish_rotate(local_cm, angle); + return (FishVec2){rotated.x + origin_cm.x, rotated.y + origin_cm.y}; +} + +static inline FishSensor fish_transform_sensor(FishSensor local, FishVec2 origin_cm, double angle) { + FishSensor world = { + .position_cm = fish_transform_position(local.position_cm, origin_cm, angle), + .normal = fish_rotate(local.normal, angle), + }; + return world; +} + +// Biophysics and dynamics +static inline FishMotionProposal fish_propose_motion( + const FishMovement* fish, + double move_command, + double turn_command, + bool eating_frozen +) { + FishMotionProposal proposal = { + .position_cm = fish->position_cm, + .orientation = fish->orientation, + .linear_velocity = 0.0, + .angular_velocity = 0.0, + }; + + if (fish->motion_order == FISH_MOTION_FIRST_ORDER) { + if (eating_frozen) { + move_command = 0.0; + turn_command = 0.0; + } + proposal.angular_velocity = turn_command * fish->max_angular_velocity; + proposal.linear_velocity = move_command * fish->max_linear_velocity; + } else { + proposal.linear_velocity = + fish->linear_velocity + move_command * fish->max_linear_acceleration; + proposal.angular_velocity = + fish->angular_velocity + turn_command * fish->max_angular_acceleration; + + proposal.linear_velocity = fish_clamp( + proposal.linear_velocity, + fish->min_linear_velocity, + fish->max_linear_velocity + ); + if (!fish->backwards && proposal.linear_velocity < 0.0) { + proposal.linear_velocity = 0.0; + } + + proposal.linear_velocity *= fish->linear_drag_factor; + proposal.angular_velocity *= fish->angular_drag_factor; + proposal.angular_velocity = fish_clamp( + proposal.angular_velocity, + fish->min_angular_velocity, + fish->max_angular_velocity + ); + + if (eating_frozen) { + proposal.linear_velocity = 0.0; + proposal.angular_velocity = 0.0; + } + } + + proposal.orientation = + fish_wrap_angle(fish->orientation + proposal.angular_velocity); + FishVec2 heading = { + cos(proposal.orientation), + sin(proposal.orientation) + }; + proposal.position_cm = (FishVec2){ + fish->position_cm.x + heading.x * proposal.linear_velocity, + fish->position_cm.y + heading.y * proposal.linear_velocity, + }; + return proposal; +} + +static inline bool fish_motion_collides( + FishVec2 proposed_position_cm, + double body_radius_cm, + const FishMovement* others, + size_t num_others, + size_t self_index +) { + for (size_t i = 0; i < num_others; i++) { + if (i == self_index) { + continue; + } + double radius = body_radius_cm + others[i].body_radius_cm; + FishVec2 delta = { + proposed_position_cm.x - others[i].position_cm.x, + proposed_position_cm.y - others[i].position_cm.y, + }; + if (fish_vec_length_squared(delta) < radius * radius) { + return true; + } + } + return false; +} + +/* + * Commit a proposal and enforce a rectangular arena. Orientation always + * changes even when translation is blocked, allowing turning in place. + */ +static inline bool fish_commit_motion( + FishMovement* fish, + FishMotionProposal proposal, + bool collided, + FishVec2 arena_size_cm +) { + FishVec2 previous_position = fish->position_cm; + double previous_orientation = fish->orientation; + + fish->last_orientation = previous_orientation; + fish->orientation = proposal.orientation; + if (!collided) { + fish->position_cm = proposal.position_cm; + } + + FishVec2 unclipped = fish->position_cm; + fish->position_cm.x = fish_clamp( + fish->position_cm.x, + fish->body_radius_cm, + arena_size_cm.x - fish->body_radius_cm + ); + fish->position_cm.y = fish_clamp( + fish->position_cm.y, + fish->body_radius_cm, + arena_size_cm.y - fish->body_radius_cm + ); + bool hit_wall = fish->position_cm.x != unclipped.x || fish->position_cm.y != unclipped.y; + bool stopped = collided || hit_wall; + + if (fish->motion_order == FISH_MOTION_SECOND_ORDER) { + fish->linear_velocity = stopped ? 0.0 : proposal.linear_velocity; + fish->angular_velocity = stopped ? 0.0 : proposal.angular_velocity; + } + + fish->collided = collided; + fish->displacement_ground_cm = (FishVec2){ + fish->position_cm.x - previous_position.x, + fish->position_cm.y - previous_position.y, + }; + fish->displacement_ego_cm = + fish_rotate(fish->displacement_ground_cm, -previous_orientation); + return hit_wall; +} + +static inline bool fish_point_in_forward_cone( + FishVec2 fish_position_cm, + double fish_orientation, + FishVec2 target_position_cm, + double radius_cm, + double cone_angle +) { + FishVec2 offset = { + target_position_cm.x - fish_position_cm.x, + target_position_cm.y - fish_position_cm.y, + }; + if (fish_vec_length_squared(offset) >= radius_cm * radius_cm) { + return false; + } + double bearing = atan2(offset.y, offset.x); + return fabs(fish_wrap_angle(bearing - fish_orientation)) <= cone_angle * 0.5; +} + +// Electrostatic field model +static inline FishMonopole fish_transform_monopole( + FishMonopole local, + FishVec2 fish_position_cm, + double fish_orientation, + bool emits_eod +) { + FishMonopole world = { + .position_cm = fish_transform_position( + local.position_cm, fish_position_cm, fish_orientation + ), + .charge_c = emits_eod ? local.charge_c : 0.0, + }; + return world; +} + +/* + * Add fields from arbitrary monopoles and dipoles at one measurement point. + * This follows electric.measure_electric_field_original exactly, including + * adding eps_m to the distance rather than to squared distance. + */ +static inline FishVec2 fish_measure_electric_field( + FishVec2 measurement_position_cm, + const FishMonopole* monopoles, + size_t num_monopoles, + const FishDipole* dipoles, + size_t num_dipoles, + double eps_m +) { + FishVec2 measurement_m = { + measurement_position_cm.x * FISH_CM_TO_M, + measurement_position_cm.y * FISH_CM_TO_M, + }; + FishVec2 field = {0.0, 0.0}; + + for (size_t i = 0; i < num_monopoles; i++) { + FishVec2 source_m = { + monopoles[i].position_cm.x * FISH_CM_TO_M, + monopoles[i].position_cm.y * FISH_CM_TO_M, + }; + FishVec2 offset = { + measurement_m.x - source_m.x, + measurement_m.y - source_m.y, + }; + double distance = fish_vec_length(offset) + eps_m; + double weight = + FISH_K_COULOMB * monopoles[i].charge_c / + (distance * distance * distance); + field.x += offset.x * weight; + field.y += offset.y * weight; + } + + for (size_t i = 0; i < num_dipoles; i++) { + FishVec2 source_m = { + dipoles[i].position_cm.x * FISH_CM_TO_M, + dipoles[i].position_cm.y * FISH_CM_TO_M, + }; + FishVec2 offset = { + measurement_m.x - source_m.x, + measurement_m.y - source_m.y, + }; + double distance = fish_vec_length(offset) + eps_m; + double r2 = distance * distance; + double r3 = r2 * distance; + double r5 = r3 * r2; + double moment_dot_offset = + dipoles[i].moment_c_m.x * offset.x + + dipoles[i].moment_c_m.y * offset.y; + double axial = 3.0 * moment_dot_offset / r5; + field.x += FISH_K_COULOMB * ( + offset.x * axial - dipoles[i].moment_c_m.x / r3 + ); + field.y += FISH_K_COULOMB * ( + offset.y * axial - dipoles[i].moment_c_m.y / r3 + ); + } + return field; +} + +static inline FishVec2 fish_induce_dipole_moment( + FishVec2 external_field_vm, + double conductor_radius_cm, + double conductor_contrast +) { + double radius_m = conductor_radius_cm * FISH_CM_TO_M; + double volume_m3 = (4.0 / 3.0) * FISH_PI * radius_m * radius_m * radius_m; + double scale = + 3.0 * FISH_EPSILON_0 * volume_m3 * conductor_contrast; + return (FishVec2){ + external_field_vm.x * scale, + external_field_vm.y * scale, + }; +} + +// Field from the original sources plus their four first-order wall images. +static inline FishVec2 fish_measure_electric_field_with_reflections( + FishVec2 measurement_position_cm, + const FishMonopole* monopoles, + size_t num_monopoles, + const FishDipole* dipoles, + size_t num_dipoles, + FishVec2 arena_size_cm, + double eps_m, + double reflection_scale, + bool flip_on_reflection +) { + FishVec2 field = fish_measure_electric_field( + measurement_position_cm, + monopoles, num_monopoles, + dipoles, num_dipoles, + eps_m + ); + for (int wall = FISH_WALL_LEFT; wall <= FISH_WALL_TOP; wall++) { + for (size_t i = 0; i < num_monopoles; i++) { + FishMonopole image = monopoles[i]; + if (wall == FISH_WALL_LEFT) { + image.position_cm.x = -image.position_cm.x; + } else if (wall == FISH_WALL_RIGHT) { + image.position_cm.x = + 2.0 * arena_size_cm.x - image.position_cm.x; + } else if (wall == FISH_WALL_BOTTOM) { + image.position_cm.y = -image.position_cm.y; + } else { + image.position_cm.y = + 2.0 * arena_size_cm.y - image.position_cm.y; + } + image.charge_c *= + reflection_scale * (flip_on_reflection ? -1.0 : 1.0); + FishVec2 contribution = fish_measure_electric_field( + measurement_position_cm, &image, 1, NULL, 0, eps_m + ); + field.x += contribution.x; + field.y += contribution.y; + } + for (size_t i = 0; i < num_dipoles; i++) { + FishDipole image = dipoles[i]; + if (wall == FISH_WALL_LEFT) { + image.position_cm.x = -image.position_cm.x; + if (flip_on_reflection) { + image.moment_c_m.x = -image.moment_c_m.x; + } + } else if (wall == FISH_WALL_RIGHT) { + image.position_cm.x = + 2.0 * arena_size_cm.x - image.position_cm.x; + if (flip_on_reflection) { + image.moment_c_m.x = -image.moment_c_m.x; + } + } else if (wall == FISH_WALL_BOTTOM) { + image.position_cm.y = -image.position_cm.y; + if (flip_on_reflection) { + image.moment_c_m.y = -image.moment_c_m.y; + } + } else { + image.position_cm.y = + 2.0 * arena_size_cm.y - image.position_cm.y; + if (flip_on_reflection) { + image.moment_c_m.y = -image.moment_c_m.y; + } + } + image.moment_c_m.x *= reflection_scale; + image.moment_c_m.y *= reflection_scale; + FishVec2 contribution = fish_measure_electric_field( + measurement_position_cm, NULL, 0, &image, 1, eps_m + ); + field.x += contribution.x; + field.y += contribution.y; + } + } + return field; +} + +// Receptor geometry and transduction +static inline double +fish_project_field(FishVec2 field, FishVec2 sensor_normal) { + return field.x * sensor_normal.x + field.y * sensor_normal.y; +} + +static inline FishSensor +fish_radial_sensor(double angle, double body_radius_cm) { + FishVec2 normal = {cos(angle), sin(angle)}; + FishSensor sensor = { + .position_cm = { + normal.x * body_radius_cm, + normal.y * body_radius_cm, + }, + .normal = normal, + }; + return sensor; +} + +static inline double +fish_uniform_sensor_angle(size_t sensor_index, size_t num_sensors) { + return 2.0 * FISH_PI * (double)sensor_index / (double)num_sensors; +} + +/* + * Mormyromast layout from sensing.calculate_mormyromast_angles: 30% of the + * receptors span the forward-facing chin region, with the rest covering the + * remaining circumference. Pass num_chin=10, num_rest=26 for the default 36. + */ +static inline double fish_mormyromast_angle( + size_t sensor_index, + size_t num_chin, + size_t num_rest, + double chin_angle +) { + if (sensor_index < num_chin) { + if (num_chin == 1) { + return 0.0; + } + return -0.5 * chin_angle + + chin_angle * (double)sensor_index / (double)(num_chin - 1); + } + size_t rest_index = sensor_index - num_chin; + if (num_rest == 1) { + return FISH_PI; + } + return 0.5 * chin_angle + + (2.0 * FISH_PI - chin_angle) * + (double)rest_index / (double)num_rest; +} + +/* + * Sign-preserving logarithmic normalization used by all receptor channels. + * Values below threshold map to signed zero and values above maximum saturate. + */ +static inline double fish_normalize_sensor_reading( + double reading, + double sensor_min, + double sensor_max, + double eps +) { + if (reading == 0.0) { + return 0.0; + } + double sign = reading < 0.0 ? -1.0 : 1.0; + double magnitude = fabs(reading); + magnitude = fish_clamp(magnitude, sensor_min, sensor_max); + magnitude = fmax(magnitude, eps); + double denominator = log10(sensor_max) - log10(sensor_min); + if (denominator <= 0.0) { + return 0.0; + } + double normalized = + (log10(magnitude) - log10(sensor_min)) / denominator; + return sign * fish_clamp(normalized, 0.0, 1.0); +} + +typedef struct Log { + float perf; + float score; + float episode_return; + float episode_length; + float n; +} Log; + +typedef struct Trace { + FishVec2 positions[TRACE_LENGTH]; + int index; + int count; +} Trace; + +typedef struct Client { + int window_width; + int window_height; + int margin; + bool show_field; + bool show_sensors; + Trace traces[MAX_AGENTS]; +} Client; + +typedef struct FishAgentState { + FishMovement movement; + double size; + double bite_cooldown; + double eat_cooldown; + bool emits_eod; + bool bite_action; + bool was_bitten; + bool ate_food; + float last_action[FISH_ACTION_SIZE]; + double ampullary_ema[FISH_NUM_AMPULLARY]; +} FishAgentState; + +typedef struct FishFood { + FishFoodMotion motion; + bool active; +} FishFood; + +typedef enum FoodDistribution { + FOOD_UNIFORM, + FOOD_PATCHY, + FOOD_N_PATCH, + FOOD_ONE_PATCH, + FOOD_RANDOM, +} FoodDistribution; + +typedef struct FishEnv { + Log log; + float* observations; + float* actions; + float* rewards; + float* terminals; + int num_agents; + int tick; + int max_steps; + unsigned int rng; + + FishVec2 arena_size_cm; + FishVec2 min_arena_size_cm; + FishVec2 max_arena_size_cm; + double electric_field_radius_cm; + FoodDistribution food_distribution; + FoodDistribution active_food_distribution; + int configured_num_food; + int fixed_num_patches; + double patch_radius_cm; + double patch_radius_std_cm; + double patch_density; + double placement_radius_frac; + FishAgentState agents[MAX_AGENTS]; + FishFood food[FISH_MAX_FOOD]; + int num_food; + int food_eaten; + float episode_return; + + FishMonopole eod_sources[2 * MAX_AGENTS]; + FishDipole intrinsic_sources[MAX_AGENTS + FISH_MAX_FOOD]; + FishDipole induced_sources[MAX_AGENTS + FISH_MAX_FOOD]; + int num_intrinsic_sources; + int num_induced_sources; + double mormyromast_cd[FISH_NUM_MORMYROMASTS]; + double amp_intrinsic_baseline[FISH_NUM_AMPULLARY]; + Client* client; +} FishEnv; + +static inline double random_uniform(FishEnv* env, double low, double high) { + double unit = (double)rand_r(&env->rng) / (double)RAND_MAX; + return low + (high - low) * unit; +} + +static inline double random_multiplier(FishEnv* env, double fraction) { + return random_uniform(env, 1.0 - fraction, 1.0 + fraction); +} + +static inline void init(FishEnv* env) { + if (env->num_agents <= 0) env->num_agents = 4; + if (env->num_agents > MAX_AGENTS) env->num_agents = MAX_AGENTS; + if (env->arena_size_cm.x <= 0.0) env->arena_size_cm.x = 70.0; + if (env->arena_size_cm.y <= 0.0) env->arena_size_cm.y = 70.0; + if (env->min_arena_size_cm.x <= 0.0) { + env->min_arena_size_cm.x = env->arena_size_cm.x; + } + if (env->min_arena_size_cm.y <= 0.0) { + env->min_arena_size_cm.y = env->arena_size_cm.y; + } + if (env->max_arena_size_cm.x <= 0.0) { + env->max_arena_size_cm.x = env->min_arena_size_cm.x; + } + if (env->max_arena_size_cm.y <= 0.0) { + env->max_arena_size_cm.y = env->min_arena_size_cm.y; + } + if (env->configured_num_food <= 0) env->configured_num_food = FISH_MAX_FOOD; + if (env->configured_num_food > FISH_MAX_FOOD) { + env->configured_num_food = FISH_MAX_FOOD; + } + if (env->fixed_num_patches <= 0) env->fixed_num_patches = 4; + if (env->patch_radius_cm <= 0.0) env->patch_radius_cm = 6.0; + if (env->patch_radius_std_cm < 0.0) env->patch_radius_std_cm = 1.5; + if (env->patch_density <= 0.0) env->patch_density = 0.001; + if (env->placement_radius_frac <= 0.0) { + env->placement_radius_frac = 0.75; + } + env->placement_radius_frac = + fish_clamp(env->placement_radius_frac, 0.0, 1.0); + if (env->food_distribution < FOOD_UNIFORM || + env->food_distribution > FOOD_RANDOM) { + env->food_distribution = FOOD_UNIFORM; + } + if (env->electric_field_radius_cm <= 0.0) { + env->electric_field_radius_cm = 15.0; + } + if (env->max_steps <= 0) env->max_steps = 4096; + if (env->rng == 0) env->rng = 1; +} + +static inline void c_allocate(FishEnv* env) { + init(env); + env->observations = (float*)calloc((size_t)env->num_agents * OBS_SIZE, sizeof(float)); + env->actions = (float*)calloc((size_t)env->num_agents * FISH_ACTION_SIZE, sizeof(float)); + env->rewards = (float*)calloc((size_t)env->num_agents, sizeof(float)); + env->terminals = (float*)calloc((size_t)env->num_agents, sizeof(float)); +} + +void compute_observations(FishEnv* env) { + for (int i = 0; i < env->num_agents; i++) { + FishAgentState* agent = &env->agents[i]; + float* obs = env->observations + i * OBS_SIZE; + int cursor = 0; + + /* Mormyromasts: active/collective image after direct-EOD subtraction. */ + for (int sensor_idx = 0; sensor_idx < FISH_NUM_MORMYROMASTS; + sensor_idx++) { + double angle = fish_mormyromast_angle( + (size_t)sensor_idx, 10, 26, FISH_PI / 3.0 + ); + FishSensor sensor = fish_transform_sensor( + fish_radial_sensor(angle, agent->movement.body_radius_cm), + agent->movement.position_cm, agent->movement.orientation + ); + FishVec2 induced = fish_measure_electric_field_with_reflections( + sensor.position_cm, NULL, 0, + env->induced_sources, (size_t)env->num_induced_sources, + env->arena_size_cm, FISH_FIELD_EPS_M, + FISH_REFLECTION_SCALE, false + ); + double reading = fish_project_field(induced, sensor.normal); + if (!agent->emits_eod) { + reading *= 100.0; + } + reading *= random_multiplier(env, 0.05); + obs[cursor++] = (float)fish_normalize_sensor_reading( + reading, FISH_MORMYROMAST_MIN_VM, + FISH_MORMYROMAST_MAX_VM, FISH_SENSOR_EPS + ); + } + + // Ampullary receptors: intrinsic sources with static self-field removed + for (int sensor_idx = 0; sensor_idx < FISH_NUM_AMPULLARY; + sensor_idx++) { + double angle = fish_uniform_sensor_angle( + (size_t)sensor_idx, FISH_NUM_AMPULLARY + ); + FishSensor sensor = fish_transform_sensor( + fish_radial_sensor(angle, agent->movement.body_radius_cm), + agent->movement.position_cm, agent->movement.orientation + ); + FishVec2 field = fish_measure_electric_field_with_reflections( + sensor.position_cm, NULL, 0, + env->intrinsic_sources, (size_t)env->num_intrinsic_sources, + env->arena_size_cm, FISH_FIELD_EPS_M, + FISH_REFLECTION_SCALE, false + ); + double reading = + fish_project_field(field, sensor.normal) - + env->amp_intrinsic_baseline[sensor_idx]; + bool cons_eod = false; + for (int other = 0; other < env->num_agents; other++) { + if (other != i && env->agents[other].emits_eod) { + cons_eod = true; + break; + } + } + reading *= random_multiplier(env, cons_eod ? 0.5 : 0.05); + double processed = fish_normalize_sensor_reading( + reading, FISH_AMPULLARY_MIN_VM, + FISH_AMPULLARY_MAX_VM, FISH_SENSOR_EPS + ); + obs[cursor++] = (float)processed; + } + + /* Knollenorgans: one directional 12-receptor block per conspecific. */ + int metadata_start = + FISH_NUM_MORMYROMASTS + FISH_NUM_AMPULLARY + + FISH_NUM_KNOLLEN * (MAX_AGENTS - 1); + int cons_slot = 0; + for (int other = 0; other < MAX_AGENTS; other++) { + if (other == i) continue; + bool valid = other < env->num_agents && env->agents[other].emits_eod; + for (int sensor_idx = 0; sensor_idx < FISH_NUM_KNOLLEN; + sensor_idx++) { + double value = 0.0; + if (valid) { + double angle = fish_uniform_sensor_angle( + (size_t)sensor_idx, FISH_NUM_KNOLLEN + ); + FishSensor sensor = fish_transform_sensor( + fish_radial_sensor( + angle, agent->movement.body_radius_cm + ), + agent->movement.position_cm, + agent->movement.orientation + ); + FishVec2 field = fish_measure_electric_field( + sensor.position_cm, + &env->eod_sources[2 * other], 2, + NULL, 0, FISH_FIELD_EPS_M + ); + double raw_knollen = + fish_project_field(field, sensor.normal); + raw_knollen *= random_multiplier(env, 0.05); + value = fabs(raw_knollen) <= FISH_KNOLLEN_MIN_VM + ? 0.0 + : (raw_knollen < 0.0 ? -1.0 : 1.0); + } + obs[cursor++] = (float)value; + } + bool detected = false; + int block_start = cursor - FISH_NUM_KNOLLEN; + for (int k = 0; k < FISH_NUM_KNOLLEN; k++) { + if (obs[block_start + k] != 0.0f) { + detected = true; + break; + } + } + double metadata = -1.0; + if (valid && detected) { + metadata = agent->size - env->agents[other].size; + metadata += random_uniform(env, -0.05, 0.05); + metadata = fish_clamp(metadata, -1.0, 1.0); + } + obs[metadata_start + cons_slot] = (float)metadata; + cons_slot++; + } + while (cons_slot < MAX_AGENTS - 1) { + for (int k = 0; k < FISH_NUM_KNOLLEN; k++) obs[cursor++] = 0.0f; + obs[metadata_start + cons_slot++] = 0.0f; + } + cursor = metadata_start + MAX_AGENTS - 1; + + for (int action_idx = 0; action_idx < FISH_ACTION_SIZE; action_idx++) { + obs[cursor++] = agent->last_action[action_idx]; + } + obs[cursor++] = 0.0f; /* fatigue, retained for upstream layout */ + obs[cursor++] = agent->was_bitten ? 1.0f : 0.0f; + obs[cursor++] = (float)agent->size; + obs[cursor++] = (float)agent->bite_cooldown; + obs[cursor++] = (float)fish_clamp( + agent->movement.displacement_ego_cm.x / + agent->movement.max_linear_velocity, -1.0, 1.0 + ); + obs[cursor++] = (float)fish_clamp( + agent->movement.displacement_ego_cm.y / + agent->movement.max_linear_velocity, -1.0, 1.0 + ); + obs[cursor++] = (float)agent->eat_cooldown; + } +} + +static inline bool +position_overlaps_agents( + const FishEnv* env, FishVec2 position, int count, double radius +) { + for (int i = 0; i < count; i++) { + FishVec2 delta = { + position.x - env->agents[i].movement.position_cm.x, + position.y - env->agents[i].movement.position_cm.y, + }; + double minimum = radius + env->agents[i].movement.body_radius_cm; + if (fish_vec_length_squared(delta) < minimum * minimum) return true; + } + return false; +} + +/* + * Matches SensingModel._calculate_corollary_discharge: baselines are computed + * once for a representative fish at the arena center, orientation zero. + */ +static inline void calibrate_electroreceptors(FishEnv* env) { + FishVec2 center = { + env->arena_size_cm.x * 0.5, + env->arena_size_cm.y * 0.5, + }; + FishMonopole eod[2] = { + { + .position_cm = { + center.x + FISH_EOD_POLE_OFFSET_CM, center.y + }, + .charge_c = FISH_EOD_CHARGE_C, + }, + { + .position_cm = { + center.x - FISH_EOD_POLE_OFFSET_CM, center.y + }, + .charge_c = -FISH_EOD_CHARGE_C, + }, + }; + FishDipole intrinsic = { + .position_cm = center, + .moment_c_m = {FISH_INTRINSIC_MOMENT_C_M, 0.0}, + }; + + for (int i = 0; i < FISH_NUM_MORMYROMASTS; i++) { + double angle = fish_mormyromast_angle( + (size_t)i, 10, 26, FISH_PI / 3.0 + ); + FishSensor sensor = fish_radial_sensor(angle, FISH_BODY_RADIUS_CM); + sensor.position_cm.x += center.x; + sensor.position_cm.y += center.y; + FishVec2 field = fish_measure_electric_field_with_reflections( + sensor.position_cm, eod, 2, NULL, 0, + env->arena_size_cm, FISH_FIELD_EPS_M, + FISH_REFLECTION_SCALE, false + ); + env->mormyromast_cd[i] = fish_project_field(field, sensor.normal); + } + + for (int i = 0; i < FISH_NUM_AMPULLARY; i++) { + double angle = fish_uniform_sensor_angle( + (size_t)i, FISH_NUM_AMPULLARY + ); + FishSensor sensor = fish_radial_sensor(angle, FISH_BODY_RADIUS_CM); + sensor.position_cm.x += center.x; + sensor.position_cm.y += center.y; + FishVec2 field = fish_measure_electric_field_with_reflections( + sensor.position_cm, NULL, 0, &intrinsic, 1, + env->arena_size_cm, FISH_FIELD_EPS_M, + FISH_REFLECTION_SCALE, false + ); + env->amp_intrinsic_baseline[i] = + fish_project_field(field, sensor.normal); + } +} + +static inline void build_electric_scene(FishEnv* env) { + env->num_intrinsic_sources = 0; + env->num_induced_sources = 0; + for (int i = 0; i < env->num_agents; i++) { + FishAgentState* agent = &env->agents[i]; + FishMonopole positive = { + .position_cm = {FISH_EOD_POLE_OFFSET_CM, 0.0}, + .charge_c = FISH_EOD_CHARGE_C, + }; + FishMonopole negative = { + .position_cm = {-FISH_EOD_POLE_OFFSET_CM, 0.0}, + .charge_c = -FISH_EOD_CHARGE_C, + }; + env->eod_sources[2 * i] = fish_transform_monopole( + positive, agent->movement.position_cm, agent->movement.orientation, + agent->emits_eod + ); + env->eod_sources[2 * i + 1] = fish_transform_monopole( + negative, agent->movement.position_cm, agent->movement.orientation, + agent->emits_eod + ); + env->intrinsic_sources[env->num_intrinsic_sources++] = (FishDipole){ + .position_cm = agent->movement.position_cm, + .moment_c_m = fish_rotate( + (FishVec2){FISH_INTRINSIC_MOMENT_C_M, 0.0}, + agent->movement.orientation + ), + }; + } + + for (int i = 0; i < env->num_food; i++) { + if (!env->food[i].active) continue; + FishDipole intrinsic = { + .position_cm = env->food[i].motion.position_cm, + .moment_c_m = fish_rotate( + (FishVec2){0.0, FISH_FOOD_INTRINSIC_MOMENT_C_M}, + env->food[i].motion.orientation + ), + }; + env->intrinsic_sources[env->num_intrinsic_sources++] = intrinsic; + } + + // EOD fields induce dipoles on prey and agent bodies (Chen et al., Eq. 6) + for (int i = 0; i < env->num_agents; i++) { + FishVec2 position = env->agents[i].movement.position_cm; + FishVec2 moment = {0.0, 0.0}; + if (!env->agents[i].emits_eod) { + FishVec2 field = fish_measure_electric_field( + position, env->eod_sources, (size_t)(2 * env->num_agents), + NULL, 0, FISH_FIELD_EPS_M + ); + moment = fish_induce_dipole_moment( + field, env->agents[i].movement.body_radius_cm, + FISH_CONDUCTOR_CONTRAST + ); + } + double moment_magnitude = fish_vec_length(moment); + double max_moment = + FISH_EOD_CHARGE_C * env->agents[i].movement.body_radius_cm; + if (FISH_EOD_CHARGE_C >= 0.0 && moment_magnitude > max_moment) { + double moment_scale = max_moment / moment_magnitude; + moment = (FishVec2){ + moment.x * moment_scale, + moment.y * moment_scale, + }; + } + env->induced_sources[env->num_induced_sources++] = (FishDipole){ + .position_cm = position, .moment_c_m = moment + }; + } + for (int i = 0; i < env->num_food; i++) { + if (!env->food[i].active) continue; + FishVec2 position = env->food[i].motion.position_cm; + FishVec2 field = fish_measure_electric_field( + position, env->eod_sources, (size_t)(2 * env->num_agents), + NULL, 0, FISH_FIELD_EPS_M + ); + env->induced_sources[env->num_induced_sources++] = (FishDipole){ + .position_cm = position, + .moment_c_m = fish_induce_dipole_moment( + field, FISH_FOOD_RADIUS_CM, FISH_CONDUCTOR_CONTRAST + ), + }; + } +} + +void c_reset(FishEnv* env) { + init(env); + env->arena_size_cm = (FishVec2){ + random_uniform( + env, env->min_arena_size_cm.x, env->max_arena_size_cm.x + ), + random_uniform( + env, env->min_arena_size_cm.y, env->max_arena_size_cm.y + ), + }; + env->active_food_distribution = env->food_distribution; + if (env->food_distribution == FOOD_RANDOM) { + env->active_food_distribution = + (FoodDistribution)(rand_r(&env->rng) % 4); + } + env->tick = 0; + env->food_eaten = 0; + env->episode_return = 0.0f; + + for (int i = 0; i < env->num_agents; i++) { + FishAgentState agent = {0}; + agent.size = random_uniform(env, 0.0, 1.0); + FishVec2 position; + int attempts = 0; + do { + position = (FishVec2){ + random_uniform(env, 3.0, env->arena_size_cm.x - 3.0), + random_uniform(env, 3.0, env->arena_size_cm.y - 3.0) + }; + } while ( + position_overlaps_agents( + env, position, i, FISH_BODY_RADIUS_CM + ) && ++attempts < 1000 + ); + agent.movement = (FishMovement){ + .position_cm = position, + .orientation = random_uniform(env, -FISH_PI, FISH_PI), + .body_radius_cm = FISH_BODY_RADIUS_CM, + .min_linear_velocity = -5.0 / FISH_SIMULATION_HZ, + .max_linear_velocity = 35.0 / FISH_SIMULATION_HZ, + .max_linear_acceleration = 650.0 / (FISH_SIMULATION_HZ * FISH_SIMULATION_HZ), + .min_angular_velocity = -3.5 / FISH_SIMULATION_HZ, + .max_angular_velocity = 3.6 / FISH_SIMULATION_HZ, + .max_angular_acceleration = 318.0 / (FISH_SIMULATION_HZ * FISH_SIMULATION_HZ), + .linear_drag_factor = 0.95, + .angular_drag_factor = 0.95, + .motion_order = FISH_MOTION_FIRST_ORDER, + .backwards = false, + }; + double size_multiplier = 1.0 + agent.size; + agent.movement.min_linear_velocity *= size_multiplier; + agent.movement.max_linear_velocity *= size_multiplier; + agent.movement.max_linear_acceleration *= size_multiplier; + agent.movement.min_angular_velocity *= size_multiplier; + agent.movement.max_angular_velocity *= size_multiplier; + agent.movement.max_angular_acceleration *= size_multiplier; + agent.emits_eod = true; + env->agents[i] = agent; + env->rewards[i] = 0.0f; + env->terminals[i] = 0.0f; + } + + FishVec2 patch_centers[MAX_PATCHES]; + double patch_radii[MAX_PATCHES]; + double patch_weights[MAX_PATCHES]; + int num_patches = 0; + double total_patch_weight = 0.0; + double minimum_edge = fmin(env->arena_size_cm.x, env->arena_size_cm.y); + + if (env->active_food_distribution == FOOD_PATCHY) { + num_patches = (int)ceil( + env->patch_density * + env->arena_size_cm.x * env->arena_size_cm.y + ); + num_patches = (int)fish_clamp(num_patches, 1, MAX_PATCHES); + for (int i = 0; i < num_patches; i++) { + patch_centers[i] = (FishVec2){ + random_uniform(env, 0.0, env->arena_size_cm.x), + random_uniform(env, 0.0, env->arena_size_cm.y), + }; + double u1 = fmax( + random_uniform(env, 0.0, 1.0), 1.0 / (double)RAND_MAX + ); + double u2 = random_uniform(env, 0.0, 1.0); + double normal_sample = + sqrt(-2.0 * log(u1)) * cos(2.0 * FISH_PI * u2); + patch_radii[i] = fish_clamp( + env->patch_radius_cm + + normal_sample * env->patch_radius_std_cm, + 1.0, minimum_edge / 2.0 + ); + patch_weights[i] = patch_radii[i] * patch_radii[i]; + total_patch_weight += patch_weights[i]; + } + } else if (env->active_food_distribution == FOOD_N_PATCH) { + num_patches = (int)fish_clamp( + env->fixed_num_patches, 1, MAX_PATCHES + ); + double initial_angle = random_uniform(env, 0.0, 2.0 * FISH_PI); + for (int i = 0; i < num_patches; i++) { + double angle = + initial_angle + 2.0 * FISH_PI * i / num_patches; + patch_centers[i] = (FishVec2){ + env->arena_size_cm.x * 0.5 * + (1.0 + env->placement_radius_frac * cos(angle)), + env->arena_size_cm.y * 0.5 * + (1.0 + env->placement_radius_frac * sin(angle)), + }; + patch_radii[i] = fmin(env->patch_radius_cm, minimum_edge / 2.0); + patch_weights[i] = patch_radii[i] * patch_radii[i]; + total_patch_weight += patch_weights[i]; + } + } else if (env->active_food_distribution == FOOD_ONE_PATCH) { + num_patches = 1; + patch_centers[0] = (FishVec2){ + env->arena_size_cm.x / 2.0, + env->arena_size_cm.y / 2.0, + }; + double u1 = fmax( + random_uniform(env, 0.0, 1.0), 1.0 / (double)RAND_MAX + ); + double u2 = random_uniform(env, 0.0, 1.0); + double normal_sample = + sqrt(-2.0 * log(u1)) * cos(2.0 * FISH_PI * u2); + patch_radii[0] = fish_clamp( + env->patch_radius_cm + + normal_sample * env->patch_radius_std_cm, + 0.1, minimum_edge / 2.0 + ); + patch_weights[0] = patch_radii[0] * patch_radii[0]; + total_patch_weight = patch_weights[0]; + } + + env->num_food = env->configured_num_food; + for (int i = 0; i < env->num_food; i++) { + FishVec2 food_position; + if (env->active_food_distribution == FOOD_UNIFORM) { + food_position = (FishVec2){ + random_uniform(env, 0.0, env->arena_size_cm.x), + random_uniform(env, 0.0, env->arena_size_cm.y), + }; + } else { + double target = + random_uniform(env, 0.0, total_patch_weight); + int patch = 0; + while (patch < num_patches - 1 && + target > patch_weights[patch]) { + target -= patch_weights[patch++]; + } + int attempts = 0; + do { + double angle = random_uniform(env, 0.0, 2.0 * FISH_PI); + double radius = patch_radii[patch] * sqrt( + random_uniform(env, 0.0, 1.0) + ); + food_position = (FishVec2){ + patch_centers[patch].x + radius * cos(angle), + patch_centers[patch].y + radius * sin(angle), + }; + } while ( + (food_position.x < 0.0 || + food_position.x >= env->arena_size_cm.x || + food_position.y < 0.0 || + food_position.y >= env->arena_size_cm.y) && + ++attempts < 1000 + ); + food_position.x = fish_clamp( + food_position.x, 0.0, env->arena_size_cm.x + ); + food_position.y = fish_clamp( + food_position.y, 0.0, env->arena_size_cm.y + ); + } + env->food[i] = (FishFood){ + .motion = { + .position_cm = food_position, + .orientation = random_uniform(env, 0.0, 2.0 * FISH_PI), + }, + .active = true, + }; + } + calibrate_electroreceptors(env); + build_electric_scene(env); + compute_observations(env); +} + +void add_log(FishEnv* env) { + env->log.episode_length += (float)env->tick; + env->log.episode_return += env->episode_return; + env->log.score += (float)env->food_eaten; + env->log.perf += (float)env->food_eaten / (float)env->num_food; + env->log.n += 1.0f; +} + +bool try_eat(FishEnv* env, int agent_idx) { + FishAgentState* agent = &env->agents[agent_idx]; + int nearest = -1; + double nearest_distance = INFINITY; + for (int i = 0; i < env->num_food; i++) { + if (!env->food[i].active) continue; + if (!fish_point_in_forward_cone( + agent->movement.position_cm, agent->movement.orientation, + env->food[i].motion.position_cm, + FISH_EATING_RADIUS_CM, FISH_EATING_ANGLE)) continue; + FishVec2 offset = { + env->food[i].motion.position_cm.x - agent->movement.position_cm.x, + env->food[i].motion.position_cm.y - agent->movement.position_cm.y, + }; + double distance = fish_vec_length_squared(offset); + if (distance < nearest_distance) { + nearest = i; + nearest_distance = distance; + } + } + if (nearest < 0) return false; + env->food[nearest].active = false; + env->food_eaten++; + agent->ate_food = true; + agent->eat_cooldown = 1.0; + return true; +} + +void c_step(FishEnv* env) { + env->tick++; + for (int i = 0; i < env->num_agents; i++) { + env->agents[i].was_bitten = false; + env->agents[i].ate_food = false; + env->rewards[i] = 0.0f; + env->terminals[i] = 0.0f; + } + + // Prey update, eating/action processing, then movement. + for (int food_idx = 0; food_idx < env->num_food; food_idx++) { + if (!env->food[food_idx].active) continue; + FishFoodMotion* food = &env->food[food_idx].motion; + food->position_cm.x = fish_clamp( + food->position_cm.x + food->velocity_cm.x, + 0.0, env->arena_size_cm.x + ); + food->position_cm.y = fish_clamp( + food->position_cm.y + food->velocity_cm.y, + 0.0, env->arena_size_cm.y + ); + } + + for (int i = 0; i < env->num_agents; i++) { + FishAgentState* agent = &env->agents[i]; + float* raw_action = env->actions + i * FISH_ACTION_SIZE; + double move = 1.0 / (1.0 + exp(-(double)raw_action[0])); + double turn = tanh((double)raw_action[1]); + agent->emits_eod = raw_action[2] > 0.0f; + agent->bite_action = + raw_action[3] > 0.0f && agent->bite_cooldown <= 0.0; + if (agent->bite_action) agent->bite_cooldown = 1.0; + agent->last_action[0] = (float)move; + agent->last_action[1] = (float)turn; + agent->last_action[2] = agent->emits_eod ? 1.0f : 0.0f; + agent->last_action[3] = agent->bite_action ? 1.0f : 0.0f; + + if (!agent->bite_action && agent->eat_cooldown <= 0.0) { + if (try_eat(env, i)) { + env->rewards[i] += FISH_EAT_REWARD; + } + } + FishMotionProposal proposal = fish_propose_motion( + &agent->movement, move, turn, agent->eat_cooldown > 0.0 + ); + FishMovement movement_views[MAX_AGENTS]; + for (int j = 0; j < env->num_agents; j++) { + movement_views[j] = env->agents[j].movement; + } + bool collided = fish_motion_collides( + proposal.position_cm, agent->movement.body_radius_cm, + movement_views, (size_t)env->num_agents, (size_t)i + ); + bool hit_wall = fish_commit_motion( + &agent->movement, proposal, collided, env->arena_size_cm + ); + if (collided || hit_wall) { + env->rewards[i] += FISH_COLLISION_REWARD; + } + } + + /* Bite resolution occurs after all fish have moved. */ + for (int i = 0; i < env->num_agents; i++) { + FishAgentState* attacker = &env->agents[i]; + if (!attacker->bite_action) continue; + int victim = -1; + double nearest = INFINITY; + for (int j = 0; j < env->num_agents; j++) { + if (i == j) continue; + if (!fish_point_in_forward_cone( + attacker->movement.position_cm, + attacker->movement.orientation, + env->agents[j].movement.position_cm, + FISH_BITING_RADIUS_CM, FISH_EATING_ANGLE)) continue; + FishVec2 offset = { + env->agents[j].movement.position_cm.x - + attacker->movement.position_cm.x, + env->agents[j].movement.position_cm.y - + attacker->movement.position_cm.y, + }; + double distance = fish_vec_length_squared(offset); + if (distance < nearest) { + victim = j; + nearest = distance; + } + } + if (victim >= 0) { + env->agents[victim].was_bitten = true; + double size_difference = + attacker->size - env->agents[victim].size; + env->rewards[victim] += + FISH_BITTEN_REWARD * (float)(1.0 + fmax(0.0, size_difference)); + } + } + + for (int i = 0; i < env->num_agents; i++) { + FishAgentState* agent = &env->agents[i]; + agent->eat_cooldown = fmax(0.0, agent->eat_cooldown - 1.0 / 3.0); + agent->bite_cooldown = fmax(0.0, agent->bite_cooldown - 1.0 / 5.0); + env->episode_return += env->rewards[i]; + } + build_electric_scene(env); + compute_observations(env); + + if (env->tick >= env->max_steps || env->food_eaten == env->num_food) { + add_log(env); + c_reset(env); + for (int i = 0; i < env->num_agents; i++) env->terminals[i] = 1.0f; + } +} + +static inline Vector2 world_to_screen(const FishEnv* env, FishVec2 point_cm) { + Client* client = env->client; + double usable_width = client->window_width - 2.0 * client->margin; + double usable_height = client->window_height - 2.0 * client->margin; + Vector2 result = { + (float)(client->margin + + point_cm.x / env->arena_size_cm.x * usable_width), + (float)(client->window_height - client->margin - + point_cm.y / env->arena_size_cm.y * usable_height), + }; + return result; +} + +static inline float render_scale(const FishEnv* env) { + Client* client = env->client; + double sx = (client->window_width - 2.0 * client->margin) / + env->arena_size_cm.x; + double sy = (client->window_height - 2.0 * client->margin) / + env->arena_size_cm.y; + return (float)fmin(sx, sy); +} + +static inline Client* make_client(void) { + Client* client = (Client*)calloc(1, sizeof(Client)); + client->window_width = 900; + client->window_height = 900; + client->margin = 55; + client->show_field = true; + client->show_sensors = true; + InitWindow(client->window_width, client->window_height, "Electric fish"); + SetTargetFPS(60); + return client; +} + +static inline Color field_color(double log_strength) { + double normalized = fish_clamp((log_strength + 8.0) / 7.0, 0.0, 1.0); + unsigned char shade = (unsigned char)(205.0 - 95.0 * normalized); + return (Color){shade, shade, shade, 190}; +} + +static inline void render_field( + FishEnv* env, + const FishMonopole* monopoles, + const FishDipole* dipoles +) { + const int columns = 25; + const int rows = 25; + for (int row = 0; row < rows; row++) { + for (int column = 0; column < columns; column++) { + FishVec2 position = { + env->arena_size_cm.x * (column + 0.5) / columns, + env->arena_size_cm.y * (row + 0.5) / rows + }; + bool near_fish = false; + double radius_squared = + env->electric_field_radius_cm * env->electric_field_radius_cm; + for (int i = 0; i < env->num_agents; i++) { + double dx = + position.x - env->agents[i].movement.position_cm.x; + double dy = + position.y - env->agents[i].movement.position_cm.y; + if (dx * dx + dy * dy <= radius_squared) { + near_fish = true; + break; + } + } + if (!near_fish) continue; + + FishVec2 field = fish_measure_electric_field_with_reflections( + position, + monopoles, (size_t)(2 * env->num_agents), + dipoles, (size_t)( + env->num_intrinsic_sources + env->num_induced_sources + ), + env->arena_size_cm, + FISH_FIELD_EPS_M, + FISH_REFLECTION_SCALE, + false + ); + double strength = fish_vec_length(field); + if (strength <= 0.0) continue; + double log_strength = log10(strength); + double arrow_length = 4.0 + 10.0 * + fish_clamp((log_strength + 8.0) / 7.0, 0.0, 1.0); + FishVec2 direction = { + field.x / strength, + field.y / strength, + }; + Vector2 start = world_to_screen(env, position); + Vector2 end = { + start.x + (float)(direction.x * arrow_length), + start.y - (float)(direction.y * arrow_length), + }; + Color color = field_color(log_strength); + DrawCircleV(start, 2.0f, color); + DrawLineEx(start, end, 1.2f, color); + } + } +} + +static inline void c_render(FishEnv* env) { + if (env->client == NULL) env->client = make_client(); + if (IsKeyPressed(KEY_TAB)) ToggleFullscreen(); + if (IsKeyPressed(KEY_F)) { + env->client->show_field = !env->client->show_field; + } + if (IsKeyPressed(KEY_S)) { + env->client->show_sensors = !env->client->show_sensors; + } + + FishMonopole monopoles[2 * MAX_AGENTS]; + FishDipole dipoles[FISH_MAX_DIPOLE_SOURCES]; + for (int i = 0; i < 2 * env->num_agents; i++) { + monopoles[i] = env->eod_sources[i]; + } + for (int i = 0; i < env->num_intrinsic_sources; i++) { + dipoles[i] = env->intrinsic_sources[i]; + } + for (int i = 0; i < env->num_induced_sources; i++) { + dipoles[env->num_intrinsic_sources + i] = env->induced_sources[i]; + } + for (int i = 0; i < env->num_agents; i++) { + Trace* trace = &env->client->traces[i]; + if (env->terminals[i]) { + trace->index = 0; + trace->count = 0; + } + trace->positions[trace->index] = + env->agents[i].movement.position_cm; + trace->index = (trace->index + 1) % TRACE_LENGTH; + if (trace->count < TRACE_LENGTH) trace->count++; + } + + BeginDrawing(); + ClearBackground(WHITE); + + Vector2 arena_min = world_to_screen( + env, (FishVec2){0.0, env->arena_size_cm.y} + ); + Vector2 arena_max = world_to_screen( + env, (FishVec2){env->arena_size_cm.x, 0.0} + ); + DrawRectangleRec( + (Rectangle){ + arena_min.x, arena_min.y, + arena_max.x - arena_min.x, arena_max.y - arena_min.y + }, + WHITE + ); + + if (env->client->show_field) { + render_field(env, monopoles, dipoles); + } + + const Color fish_color = {157, 122, 216, 255}; + for (int i = 0; i < env->num_agents; i++) { + Trace* trace = &env->client->traces[i]; + for (int j = 0; j < trace->count - 1; j++) { + int current = + (trace->index - j - 1 + TRACE_LENGTH) % TRACE_LENGTH; + int previous = + (trace->index - j - 2 + TRACE_LENGTH) % TRACE_LENGTH; + float alpha = + 0.55f * (float)(trace->count - j) / (float)trace->count; + DrawLineEx( + world_to_screen(env, trace->positions[current]), + world_to_screen(env, trace->positions[previous]), + 2.0f, ColorAlpha(fish_color, alpha) + ); + } + } + + float scale = render_scale(env); + for (int i = 0; i < env->num_food; i++) { + if (!env->food[i].active) continue; + Vector2 position = world_to_screen( + env, env->food[i].motion.position_cm + ); + float radius = fmaxf(2.5f, (float)(FISH_FOOD_RADIUS_CM * scale)); + DrawCircleV(position, radius, (Color){80, 220, 125, 255}); + DrawCircleLines( + (int)position.x, (int)position.y, radius, + (Color){190, 255, 205, 255} + ); + } + for (int i = 0; i < env->num_agents; i++) { + FishAgentState* agent = &env->agents[i]; + FishMovement* fish = &agent->movement; + Vector2 center = world_to_screen(env, fish->position_cm); + float radius = (float)(fish->body_radius_cm * scale); + + if (agent->emits_eod) { + float pulse = radius + 5.0f + + 5.0f * sinf((float)env->tick * 0.18f); + DrawCircleLines((int)center.x, (int)center.y, pulse, + (Color){fish_color.r, fish_color.g, fish_color.b, 120}); + } + + float heading_x = cosf((float)fish->orientation); + float heading_y = -sinf((float)fish->orientation); + DrawRing(center, radius - 1.5f, radius + 1.5f, + 0.0f, 360.0f, 32, fish_color); + Vector2 nose = { + center.x + heading_x * radius * 1.35f, + center.y + heading_y * radius * 1.35f, + }; + DrawLineEx(center, nose, 3.0f, fish_color); + + Vector2 positive = world_to_screen( + env, monopoles[2 * i].position_cm + ); + Vector2 negative = world_to_screen( + env, monopoles[2 * i + 1].position_cm + ); + DrawCircleV(positive, 3.0f, RED); + DrawCircleV(negative, 3.0f, BLUE); + + if (env->client->show_sensors) { + for (int sensor_idx = 0; sensor_idx < FISH_NUM_KNOLLEN; + sensor_idx++) { + double angle = fish_uniform_sensor_angle( + (size_t)sensor_idx, FISH_NUM_KNOLLEN + ); + FishSensor sensor = fish_radial_sensor( + angle, fish->body_radius_cm + ); + sensor = fish_transform_sensor( + sensor, fish->position_cm, fish->orientation + ); + DrawCircleV( + world_to_screen(env, sensor.position_cm), + 1.5f, (Color){184, 164, 224, 180} + ); + } + } + DrawText(TextFormat("%d", i + 1), + (int)(center.x + radius + 4), (int)(center.y - radius), 16, BLACK); + } + + DrawRectangleLinesEx( + (Rectangle){ + arena_min.x, arena_min.y, + arena_max.x - arena_min.x, arena_max.y - arena_min.y + }, + 3.0f, DARKGRAY + ); + DrawText("Electric fish", 20, 14, 24, BLACK); + DrawText("F: electric field S: sensors TAB: fullscreen", + 20, env->client->window_height - 32, 18, DARKGRAY); + int active_eods = 0; + for (int i = 0; i < env->num_agents; i++) { + active_eods += env->agents[i].emits_eod ? 1 : 0; + } + DrawText(TextFormat("step %d active EODs %d/%d", + env->tick, active_eods, env->num_agents), + env->client->window_width - 285, 18, 18, DARKGRAY); + DrawText(TextFormat("food %d/%d", env->food_eaten, env->num_food), + env->client->window_width - 145, + env->client->window_height - 32, 18, DARKGRAY); + DrawText(TextFormat("field radius %.0f cm", env->electric_field_radius_cm), + 430, env->client->window_height - 32, 18, DARKGRAY); + EndDrawing(); +} + +static inline void c_close(FishEnv* env) { + if (env->client != NULL) { + if (IsWindowReady()) CloseWindow(); + free(env->client); + env->client = NULL; + } +} + +static inline void free_allocated(FishEnv* env) { + free(env->observations); + free(env->actions); + free(env->rewards); + free(env->terminals); + c_close(env); +} diff --git a/tests/test_electric_fish_physics.py b/tests/test_electric_fish_physics.py new file mode 100644 index 0000000000..3329476486 --- /dev/null +++ b/tests/test_electric_fish_physics.py @@ -0,0 +1,50 @@ +import json +import math +import subprocess +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] + +# Generated from KempnerInstitute/wef ElectricScene using the deterministic +# two-fish/one-food fixture implemented by +# `./electric_fish --physics-fixture`. +UPSTREAM_FIXTURE = { + "eod": [2.156647270767495e-05, 2.2287084167914553e-05], + "intrinsic": [1.303699593123667e-11, 2.044228319704432e-11], + "induced": [-5.345843529811098e-09, -6.1168561334662774e-09], + "induced_fish": [-1.9715927047534895e-22, -2.4709593293090667e-22], + "induced_food": [-1.0289523437915805e-22, -6.632397743951107e-23], + "morm_cd0": 0.19028434017121887, + "amp_baseline0": 1.9838499805530827e-07, +} + + +def test_electric_fish_scene_matches_upstream_fixture(): + executable = ROOT / "electric_fish" + if not executable.is_file(): + subprocess.run( + [str(ROOT / "build.sh"), "electric_fish", "--fast"], + cwd=ROOT, + check=True, + ) + + output = subprocess.check_output( + [str(executable), "--physics-fixture"], + cwd=ROOT, + text=True, + ) + actual = json.loads(output) + + for key, expected in UPSTREAM_FIXTURE.items(): + got = actual[key] + if isinstance(expected, list): + assert len(got) == len(expected) + for got_value, expected_value in zip(got, expected): + assert math.isclose( + got_value, expected_value, rel_tol=2e-13, abs_tol=1e-30 + ), key + else: + assert math.isclose( + got, expected, rel_tol=2e-13, abs_tol=1e-30 + ), key diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000000..4800bbd27e --- /dev/null +++ b/uv.lock @@ -0,0 +1,1567 @@ +version = 1 +revision = 3 +requires-python = ">=3.10" +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", +] + +[[package]] +name = "annotated-types" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/56/a8120250d128bed162cd73c76d45f6ef9991f3e068f62a8ee060afa3104a/annotated_types-0.8.0.tar.gz", hash = "sha256:13b2beaad985e05e2d6407ee4c4f35590b11f8d693a258a561055cac8f64cab7", size = 15893, upload-time = "2026-07-23T20:16:13.995Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl", hash = "sha256:f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0", size = 13427, upload-time = "2026-07-23T20:16:12.938Z" }, +] + +[[package]] +name = "certifi" +version = "2026.7.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/c2/24167ea9858356b47a87a50d39908bfdb72ceeefe0041586e704e5376b3a/certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55", size = 138112, upload-time = "2026-07-22T03:35:12.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl", hash = "sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775", size = 136983, upload-time = "2026-07-22T03:35:11.276Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/2a/23f34ec9d04624958e137efdc394888716353190e75f25dd22c7a2c7a8aa/charset_normalizer-3.4.9.tar.gz", hash = "sha256:673611bbd43f0810bec0b0f028ddeaaa501190339cac411f347ac76917c3ae7b", size = 152439, upload-time = "2026-07-07T14:34:58.454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/81/8e983840c6e5b93b33c2ba81aa3d52c2e42f0e9a690ce7607a2e61da4a5c/charset_normalizer-3.4.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd6280cf040f233bd7d3407b743b4b4c74f70e8e1c4199cb112a62c941c0772a", size = 322240, upload-time = "2026-07-07T14:32:36.236Z" }, + { url = "https://files.pythonhosted.org/packages/de/d1/b4319dc3229d8272fba305e206fc0a148e2de8d4087917ce62ae6382f359/charset_normalizer-3.4.9-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa99adc8f081b475a12843953db36831eaf83ec33eb46a90629ca6a5de45a616", size = 216475, upload-time = "2026-07-07T14:32:38.142Z" }, + { url = "https://files.pythonhosted.org/packages/80/33/6c99c1b3e6b8bf730e1bc809b9a2608f224145069114c479a2e9e1494346/charset_normalizer-3.4.9-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c1225416b463483160e4af85d5fc3a9690ccb53fd4b1865a6437825f5ede3209", size = 238670, upload-time = "2026-07-07T14:32:39.658Z" }, + { url = "https://files.pythonhosted.org/packages/7f/f4/ffbb83546e1f198ecc70ecd372b65cf2b50f9068b380abd67640f17a8e18/charset_normalizer-3.4.9-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:16d10d789dd9bcca1173c95af82c58433122564b7bc39385124be735a35cbe99", size = 233476, upload-time = "2026-07-07T14:32:41.155Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5f/b98b8da398637b551e427e7be922bdec19177dc54d6811dcdaa503f23aac/charset_normalizer-3.4.9-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9bb41182d93ea91f60b4bc8fbf4c820c69ef8a12ab2d917f3f1834f1acad07e8", size = 223817, upload-time = "2026-07-07T14:32:42.592Z" }, + { url = "https://files.pythonhosted.org/packages/36/31/a276bb2e66243072a3fd06fdcab9cbb61a305b02143d70d2bda21d888fa8/charset_normalizer-3.4.9-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:bcf74c1df76758a395bf0af608c04c82257523f55c9868b334f06270d0f2112b", size = 207974, upload-time = "2026-07-07T14:32:44.258Z" }, + { url = "https://files.pythonhosted.org/packages/5e/be/7ee4453d7e88dfbc4104ccd34900b9f2c7c17dac22881865fe0e82424a25/charset_normalizer-3.4.9-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b5314963fce9b0b12743891de876e724997864ee22aa496f903f426c7e2fa5b2", size = 221655, upload-time = "2026-07-07T14:32:45.64Z" }, + { url = "https://files.pythonhosted.org/packages/1d/85/181c652953eb5276d198f375b1dd641047392050098100a3a02d6534f657/charset_normalizer-3.4.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e9701d0049d92c16703a42771b98d560b95248949f23f8cf7b4eddd201814fb9", size = 219229, upload-time = "2026-07-07T14:32:47.376Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e7/aaf6da33fc9f4691cda8f7efbc9f69179d3d39ec8a4799baf273ee1d8db0/charset_normalizer-3.4.9-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:65a7ff3f705e57d392f7261b6d0550fe137c3019477431f1c355e0db0a7d3e15", size = 209704, upload-time = "2026-07-07T14:32:48.855Z" }, + { url = "https://files.pythonhosted.org/packages/63/01/f2fb3bd3a73be48b173ee0c6aa8d2497af97d5663a8c4c4b491de4c62f7a/charset_normalizer-3.4.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79580094b00d1789d1f93ea55bc43cb2f611910c72235b7657f3482ddcc1b22d", size = 226243, upload-time = "2026-07-07T14:32:50.239Z" }, + { url = "https://files.pythonhosted.org/packages/c4/02/c57a22739fe05246b0b5783b3bfb6afaac4eebb46f3ececdfb2f048f780e/charset_normalizer-3.4.9-cp310-cp310-win32.whl", hash = "sha256:432786d3561e69aeeae6c7e8648964ce0ad05736120135601f87ac26b9c83381", size = 150935, upload-time = "2026-07-07T14:32:51.676Z" }, + { url = "https://files.pythonhosted.org/packages/37/8d/ca39a7559a4797505530d084fd3a49a2c959efbbbff146302fb7be4e3b35/charset_normalizer-3.4.9-cp310-cp310-win_amd64.whl", hash = "sha256:8c041122946b7ba21bb32c45b1aa57b1be35527690aeb3c5c234521085632eee", size = 162314, upload-time = "2026-07-07T14:32:53.193Z" }, + { url = "https://files.pythonhosted.org/packages/01/da/a44bd7a13d426e69e4894557106cd58669097bfad4a8681123b618fbfc5d/charset_normalizer-3.4.9-cp310-cp310-win_arm64.whl", hash = "sha256:375b83ed0aecfce76c16d198fbc21f3b11b337d68662bea0a995046682a11419", size = 153075, upload-time = "2026-07-07T14:32:54.554Z" }, + { url = "https://files.pythonhosted.org/packages/0b/e3/85ec501f206fb049259288c1f3506e53876937fb00edb47009348e66756b/charset_normalizer-3.4.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0e94703ec9684807f20cfb5eed95c70f67f2a8f21ad620146d7b5a13677b93e5", size = 317075, upload-time = "2026-07-07T14:32:56.021Z" }, + { url = "https://files.pythonhosted.org/packages/c3/69/2a5385192e67175f7d8bd5ce4f57c24bc956439adeae5c13a99aa28a53d1/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a441ea71902098ffe78c5abe6c494f44160b4af614ed16c3d9a3b1d17fd8ee2", size = 213837, upload-time = "2026-07-07T14:32:57.78Z" }, + { url = "https://files.pythonhosted.org/packages/b3/46/03ddc7da576d814fe0a36dd1f0fd3258e95404b4b2e3c026b7923d7e133f/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:304b13570067b2547562e308af560b3963857b1fa90bd6afd978130130fe2d6a", size = 235503, upload-time = "2026-07-07T14:32:59.205Z" }, + { url = "https://files.pythonhosted.org/packages/4e/6e/de0229a7ef40f6f9d28a837eebf4ec47bdca5dab4e900c84f22919af636a/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4773092f8019072343a7447203308b176e10199920eb02d6195e81bbb3274c29", size = 229944, upload-time = "2026-07-07T14:33:00.803Z" }, + { url = "https://files.pythonhosted.org/packages/a5/34/49b9060e8418b14fb5cba9cf6bfb383111e2538a03a1fb18e66a95aeb3d5/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:04ce310cb89c15df659582aee80a0603788732a5e017d5bd5c81158106ce249c", size = 221276, upload-time = "2026-07-07T14:33:02.199Z" }, + { url = "https://files.pythonhosted.org/packages/44/95/80282cce0fae9c3061203d723ee87da996aed79679e65d8935050ee7ca1f/charset_normalizer-3.4.9-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:c0323c9daef75ef2e5083624b4585018a0c9d5e3b40f607eed81a311270b934b", size = 205260, upload-time = "2026-07-07T14:33:03.698Z" }, + { url = "https://files.pythonhosted.org/packages/0c/74/2f62c8821b969ea3bd67cc2e6976834f48ca5d12664d2559ebcd9bcfbed7/charset_normalizer-3.4.9-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:871ff67ea1aad4dfd91736464934d56b32dac49f9fbe16cddba36198a7b3a0db", size = 217786, upload-time = "2026-07-07T14:33:05.12Z" }, + { url = "https://files.pythonhosted.org/packages/d9/8d/feabb82cb49fcad14515b1d7d1ca4787b0da7fc723a212bf89bc9e0fac52/charset_normalizer-3.4.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:67830fc78e67501f47bb950471b2dcb9b35b140084429318e862895a8e89c993", size = 216798, upload-time = "2026-07-07T14:33:06.629Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ff/c946d63bc3786d5b84d960b0f7ab7e25b828486a946b5aa997625bcaf6a6/charset_normalizer-3.4.9-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:3d92613ec25e43b05f042302531ec0f00b8445190e43325880cbd6ab7c2581da", size = 206429, upload-time = "2026-07-07T14:33:08.006Z" }, + { url = "https://files.pythonhosted.org/packages/af/ba/5e5007c370702f85d2ef75791fac7943ed41e080364a673b20142e430e3e/charset_normalizer-3.4.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:280081916dc341820640489a66e4696049401ef1cf6dd672f672e70ad915aca3", size = 223066, upload-time = "2026-07-07T14:33:09.783Z" }, + { url = "https://files.pythonhosted.org/packages/83/d5/9096aa3cf532dfad237861544eb47a0f20d5adbf1039760fed8eaae935d9/charset_normalizer-3.4.9-cp311-cp311-win32.whl", hash = "sha256:ac351b3b8014eead140e77e9717e2992c6bbe30b63bc3422422eb84865412e3d", size = 150456, upload-time = "2026-07-07T14:33:11.217Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a1/e29995109e455dc8eff8d0fac6ae509be39561318a7cfeac5d33ad029213/charset_normalizer-3.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:6366a16e1a25018694d6a5d784d09b046edc9eac40ea2b54065c3052672516a1", size = 161410, upload-time = "2026-07-07T14:33:12.743Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8d/1569f4d0032d6ba2a4fe4591c35bf87868c600c41a71eb5c2e1ffa8464c2/charset_normalizer-3.4.9-cp311-cp311-win_arm64.whl", hash = "sha256:1d22856ffbe153a602df38e4a5464f0b748a54002e0d69ac6d2ad0a197cc99ec", size = 152649, upload-time = "2026-07-07T14:33:14.173Z" }, + { url = "https://files.pythonhosted.org/packages/70/4a/ecbd131485c07fcdfad54e28946d513e3da22ef3b4bd854dcafae54ec739/charset_normalizer-3.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45b0cc4e3556cd875e09102988d1ab8356c998b596c9fced84547c8138b487a0", size = 319300, upload-time = "2026-07-07T14:33:15.666Z" }, + { url = "https://files.pythonhosted.org/packages/ec/96/5d9364e3342d69f3a045e1777bc47c85c383e6e9466d561b33fdb419d1f9/charset_normalizer-3.4.9-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9b2aff1c7b3884512b9512c3eaadd9bab39fb45042ffaaa1dd08ff2b9f8109d9", size = 215802, upload-time = "2026-07-07T14:33:17.031Z" }, + { url = "https://files.pythonhosted.org/packages/4b/4c/5361f9aa7f2cb58d94f2ab831b3d493f69efb1d239654b4744e3c09527cb/charset_normalizer-3.4.9-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9104ed0bd76a429d46f9ec0dbc9b08ad1d2dcdf2b00a5a0daa1c145329b35b44", size = 237171, upload-time = "2026-07-07T14:33:18.576Z" }, + { url = "https://files.pythonhosted.org/packages/50/78/ce342ca4ff30b2eb49fe6d9578df85974f90c67d294113e94efdd9664cbd/charset_normalizer-3.4.9-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7b86a2b16095d250c6f58b3d9b2eee6f4147754344f3dab0922f7c9bf7d226c9", size = 233075, upload-time = "2026-07-07T14:33:20.084Z" }, + { url = "https://files.pythonhosted.org/packages/01/c4/4fa4c8b3097a11f3c5f09a35b72ed6855fb1d332469504962ab7bafcc702/charset_normalizer-3.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e226f6218febc71f6c1fc2fafb91c226f75bdc1d8fb12d66823716e891608fd", size = 224256, upload-time = "2026-07-07T14:33:21.747Z" }, + { url = "https://files.pythonhosted.org/packages/87/3a/ad914516df7e358a81aae018caa5e0470ba827fa6d763b1d2e87d920a5f6/charset_normalizer-3.4.9-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:90c44bc373b7687f6948b693cceaea1348ae0975d7474746559494468e3c1d84", size = 208784, upload-time = "2026-07-07T14:33:23.313Z" }, + { url = "https://files.pythonhosted.org/packages/d7/74/3c12f9755717dfe5c5c87da63f35d765fa0c00382ec26bf23f7fae34f2ba/charset_normalizer-3.4.9-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cdef90ae47919cae358d8ab15797a800ed41da7aba5d72419fb510729e2ed4b", size = 219928, upload-time = "2026-07-07T14:33:24.814Z" }, + { url = "https://files.pythonhosted.org/packages/33/9a/895095b83e7907abd6d3d99aad3a38ad0d9686cc186cb0c94c24320fe63e/charset_normalizer-3.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:60f44ade2cf573dad7a277e6f8ca9a51a21dda572b13bd7d8539bb3cd5dbedde", size = 218489, upload-time = "2026-07-07T14:33:26.42Z" }, + { url = "https://files.pythonhosted.org/packages/a1/34/ef5c05f412f42520d7709b7d3784d19640839eb7366ded1755511585429f/charset_normalizer-3.4.9-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a1786910334ed46ab1dd73222f2cd1e05c2c3bb39f6dddb4f8b36fc382058a39", size = 210267, upload-time = "2026-07-07T14:33:27.952Z" }, + { url = "https://files.pythonhosted.org/packages/83/dc/9b29fa4412b318bf3bfea985c35d67eb55e04b59a7c3f2237168b0e0be6f/charset_normalizer-3.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03d07803992c6c7bbc976327f34b18b6160327fc81cb82c9d504720ac0be3b62", size = 226030, upload-time = "2026-07-07T14:33:29.397Z" }, + { url = "https://files.pythonhosted.org/packages/0e/42/6dbc00b8cd16011691203e33570fa42ed5746599a2e878112d16eab403a3/charset_normalizer-3.4.9-cp312-cp312-win32.whl", hash = "sha256:78841cccf1af7b40f6f716338d50c0902dbe88d9f800b3c973b7a9a0a693a642", size = 151185, upload-time = "2026-07-07T14:33:30.781Z" }, + { url = "https://files.pythonhosted.org/packages/80/cc/f920afd1a23c58ccd53c1d36085a71893a4737ff5e66e0371efab6809850/charset_normalizer-3.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:4b3dac63058cc36820b0dd072f89898604e2d39686fe05321729d00d8ac185a0", size = 162557, upload-time = "2026-07-07T14:33:32.176Z" }, + { url = "https://files.pythonhosted.org/packages/f0/e6/0386d43a261ff4e4b30c5857af7df877254b46bec7b9d1b74b6bf969a90b/charset_normalizer-3.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:78fa18e436a1a0e58dbd7e02fc4473f3f32cceb12df9dfca542d075961c307d2", size = 152665, upload-time = "2026-07-07T14:33:33.711Z" }, + { url = "https://files.pythonhosted.org/packages/b2/06/97ec2aeae780b31d742b6352218b43841a6871e2564578ca522dce4a45c3/charset_normalizer-3.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:440eede837960000d74978f0eba527be106b5b9aee0daf779d395276ed0b0614", size = 317688, upload-time = "2026-07-07T14:33:35.408Z" }, + { url = "https://files.pythonhosted.org/packages/d0/39/8ff066c672434225f8d25f8b739f992af250944392173dcc88362681c9bf/charset_normalizer-3.4.9-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21e764fd1e70b6a3e205a0e46f3051701f98a8cb3fad66eeb80e48bb502f8698", size = 214982, upload-time = "2026-07-07T14:33:36.996Z" }, + { url = "https://files.pythonhosted.org/packages/92/8f/3a47a3667c83c2df9483d91644c6c107de3bf8874aa1793da9d3012eb986/charset_normalizer-3.4.9-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e4fd89cc178bced6ad29cb3e6dd4aa63fa5017c3524dbd0b25998fb64a87cc8b", size = 236460, upload-time = "2026-07-07T14:33:38.536Z" }, + { url = "https://files.pythonhosted.org/packages/f1/60/b22cdbee7e4013dab8b0d7647fc6181120fbbbc8f7025c226d15bd5a47fc/charset_normalizer-3.4.9-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bd47ba7fc3ca94896759ea0109775132d3e7ab921fbf54038e1bab2e46c313c9", size = 232003, upload-time = "2026-07-07T14:33:40.059Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f8/72eb13dcabe7257035cea8aefd922caad2f110d252bf9f67c4c2ca763aee/charset_normalizer-3.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:84fd18bcc17526fc2b3c1af7d2b9217d32c9c04448c16ec693b9b4f1985c3d33", size = 223149, upload-time = "2026-07-07T14:33:41.631Z" }, + { url = "https://files.pythonhosted.org/packages/b0/3e/faee8f9de92b14ee1198e9163252bb15efee7301b31256a3b6d9ebfdd0dd/charset_normalizer-3.4.9-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:5b10cd92fc5c498b35a8635df6d5a100207f88b63a4dc1de7ef9a548e1e2cd63", size = 207901, upload-time = "2026-07-07T14:33:43.209Z" }, + { url = "https://files.pythonhosted.org/packages/3a/25/45f30093ae27dd7b92a793b61882a38685f993700113ca36e0c9c14965e1/charset_normalizer-3.4.9-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a4fbdde9dd4a9ce5fd52c2b3a347bb50cc89483ef783f1cb00d408c13f7a96c0", size = 219176, upload-time = "2026-07-07T14:33:44.725Z" }, + { url = "https://files.pythonhosted.org/packages/48/18/c8f397329c35e32f6a837e488986f4ae03bd2abebc453b48714991630c2f/charset_normalizer-3.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:416c229f77e5ea25b3dfd4b582f8d73d7e43c22320302b9ab128a2d3a0b38efe", size = 217356, upload-time = "2026-07-07T14:33:46.192Z" }, + { url = "https://files.pythonhosted.org/packages/86/7e/5ce0bba863470fd1902d5e5843968951bddf38abe4742fc97116ef4598b3/charset_normalizer-3.4.9-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:75286256590a6320cf106a0d28970d3560aad9ee09aa7b34fb40524792436d35", size = 209614, upload-time = "2026-07-07T14:33:47.705Z" }, + { url = "https://files.pythonhosted.org/packages/6c/ef/2473d3c4d869155be4af1191111d59c4d5c4e0173026f7e85b176e23bf65/charset_normalizer-3.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:69b157c5d3292bcd443faca052f3096f637f1e074b98212a933c074ae23dc3b8", size = 224991, upload-time = "2026-07-07T14:33:49.238Z" }, + { url = "https://files.pythonhosted.org/packages/d0/a3/53ddae3db108a088156aa8ddfafd411ebbc1340f48c5573f697b27f69a39/charset_normalizer-3.4.9-cp313-cp313-win32.whl", hash = "sha256:51307f5c71007673a2bf8232ad973483d281e74cb99c8c5a990af1eefa6277d9", size = 150622, upload-time = "2026-07-07T14:33:50.711Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ef/6953a77c7cf2c2ff9998e6f575ab3e380119f100223381565a4f94c1f836/charset_normalizer-3.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:fe2c7201c642b7c308f1675355ad7ff7b66acfe3541625efe5a3ad38f29d6115", size = 161947, upload-time = "2026-07-07T14:33:52.197Z" }, + { url = "https://files.pythonhosted.org/packages/6e/fb/d560d1d1555debbfe7849d9cac6145c1b537709d79576bf22557ed803b82/charset_normalizer-3.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:611057cc5d5c0afc743ba8be6bd828c17e0aaa8643f9d0a9b9bb7dea80eb8012", size = 152594, upload-time = "2026-07-07T14:33:53.486Z" }, + { url = "https://files.pythonhosted.org/packages/7e/8d/496817fa0944239ecae662dd57ea765cfeaec6a735f9f025d4b7b72e7143/charset_normalizer-3.4.9-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:0327fcd59a935777d83410750c50600ee9571af2846f71ce40f25b13da1ef380", size = 317253, upload-time = "2026-07-07T14:33:54.994Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f9/ef4a69ea338ad3c0deceea0f5f7d2380ae8b52132b06d652cb0d2cd86706/charset_normalizer-3.4.9-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a79d9f4d8001473a30c163556b3c3bfebec837495a412dde78b51672f6134f9", size = 215898, upload-time = "2026-07-07T14:33:56.334Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e7/5ddfd76fc061eb52de219658a4aa431cbacadf0a0219c8854f00da50d289/charset_normalizer-3.4.9-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:33bdcc2a32c0a0e861f60841a512c8acc658c87c2ac59d89e3a46dacf7d866e4", size = 236718, upload-time = "2026-07-07T14:33:57.9Z" }, + { url = "https://files.pythonhosted.org/packages/49/ba/768fa3f36048d81c477a0ce61f813bc1454d80917ccfe550abd9f44f5e24/charset_normalizer-3.4.9-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f840ed6d8ecba8255df8c42b87fadeda98ddfc6eeec05e2dc66e26d46dd6f58a", size = 232519, upload-time = "2026-07-07T14:33:59.811Z" }, + { url = "https://files.pythonhosted.org/packages/f4/c4/b3e049d2aa3766180c78507110543d9d50894cc97f57de543f1be521dcdc/charset_normalizer-3.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c25fe15c70c59eb7c5ce8c06a1f3fa1da0ecc5ea1e7a5922c40fd2fa9b0d5046", size = 223143, upload-time = "2026-07-07T14:34:01.517Z" }, + { url = "https://files.pythonhosted.org/packages/19/79/55c32d06d76ae4feafe053f061f3e3ab70bcf19f4007797ce8c3efda7830/charset_normalizer-3.4.9-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:f7fb7d750cfa0a070d2c24e831fd3481019a60dd317ea2b39acbcebc08b6ed81", size = 206742, upload-time = "2026-07-07T14:34:03.04Z" }, + { url = "https://files.pythonhosted.org/packages/10/e0/47c079dd82d217c807479cd59ffd30af56307ea31c108b75758970459ad3/charset_normalizer-3.4.9-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4d1c96a7a18b9690a4d46df09e3e3382406ae3213727cd1019ebade1c4a81917", size = 219191, upload-time = "2026-07-07T14:34:04.657Z" }, + { url = "https://files.pythonhosted.org/packages/42/ab/b9bc2e77d6b44a7e46ef62ec5cac1c9a6ba7b9135a5d560f002696ec9995/charset_normalizer-3.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a4cfde78a9f2880208d16a93b795726a3017d5977e08d1e162a7a31322479c41", size = 218328, upload-time = "2026-07-07T14:34:06.115Z" }, + { url = "https://files.pythonhosted.org/packages/f1/78/c9c71d599f5aa2d42bcdd35cbbd46d7f535351a57e40ff7d8e5a7e219401/charset_normalizer-3.4.9-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:d4d6fcde76f94f5cb9e43e9e9a61f16dacefd228cbbf6f1a09bd9b219a92f1a1", size = 207406, upload-time = "2026-07-07T14:34:07.554Z" }, + { url = "https://files.pythonhosted.org/packages/f6/39/c914445c321a845097ce4f6ac7de9a18228a77b766272125a1ce00d851eb/charset_normalizer-3.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:898f0e9068ca27d37f8e83a5b962821df851532e6c4a7d615c1c033f9da6eedf", size = 225157, upload-time = "2026-07-07T14:34:09.061Z" }, + { url = "https://files.pythonhosted.org/packages/9b/f2/c0d4b8508565a36bc5c624e88ed297f5b0b1095011034d7f5b83a69908b5/charset_normalizer-3.4.9-cp314-cp314-win32.whl", hash = "sha256:c1c948747b03be832dceed96ca815cef7360de9aa19d37c730f8e3f6101aca48", size = 151095, upload-time = "2026-07-07T14:34:10.901Z" }, + { url = "https://files.pythonhosted.org/packages/49/fd/a1d26144398c67486422a72bf5812cda22cb4ccfcd95a290fb41ceb4b8e2/charset_normalizer-3.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:16b65ea0f2465b6fb52aa22de5eca612aa964ddfec00a912e26f4656cbef890b", size = 162796, upload-time = "2026-07-07T14:34:12.47Z" }, + { url = "https://files.pythonhosted.org/packages/20/95/d75e82f8ce9fd323ebf059c16c9aadefb22a1ecde13b7840b35835e4886c/charset_normalizer-3.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:40a126142a56b2dfc0aacbad1de8310cbf60da7656db0e6b16eebd48e3e93519", size = 153334, upload-time = "2026-07-07T14:34:14.044Z" }, + { url = "https://files.pythonhosted.org/packages/00/5e/17398df3a139985ba9d11ed072531986f408c8fca952835ef1ab1820c02b/charset_normalizer-3.4.9-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:609b3ba8fcc0fb5ab7af00719d0fb6ad0cb518e48e7712d12fd68f1327951198", size = 338848, upload-time = "2026-07-07T14:34:15.688Z" }, + { url = "https://files.pythonhosted.org/packages/cd/91/7253a32e86b7e1d1239b1b36ba6dd0f021a21107ab33054b53119cc083b9/charset_normalizer-3.4.9-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:51447e9aa2684679af07ca5021c3db526e0284347ebf4ffcec1154c3350cfe32", size = 223022, upload-time = "2026-07-07T14:34:17.248Z" }, + { url = "https://files.pythonhosted.org/packages/cb/32/2e64bd2be10e89c61e57ebe6a93fd98ae88eb7ebe414b5121f22c96c69eb/charset_normalizer-3.4.9-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cc1b0fff8ead343dae06305f954eb8468ba0ec1a97881f42489d198e4ce3c632", size = 241590, upload-time = "2026-07-07T14:34:18.813Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ef/d96ec496cfea0c21db43b0ad03891308b02388d054cc902cf0e5a1ad6a88/charset_normalizer-3.4.9-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fa36ec09ef71d158186bc79e359ff5fdd6e7996fe8ab638f00d6b93139ba4fcf", size = 239584, upload-time = "2026-07-07T14:34:20.52Z" }, + { url = "https://files.pythonhosted.org/packages/d4/ce/9af95f7876194bd7a14e3dfe4a4de2e0bff02666a3910d72beafd06cc297/charset_normalizer-3.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:df115d4d83168fdf2cae48ef1ff6d1cb4c466364e30861b37121de0f3bf1b990", size = 230224, upload-time = "2026-07-07T14:34:22.189Z" }, + { url = "https://files.pythonhosted.org/packages/52/94/af74dde74a3996bd959c350709bfe50e297823d70a8c1cbd54b838880863/charset_normalizer-3.4.9-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:f86c6358749bd4fda175388691e3ba8c46e24c5347d0afd20f9b7edfc9faf07d", size = 212667, upload-time = "2026-07-07T14:34:23.857Z" }, + { url = "https://files.pythonhosted.org/packages/ee/f0/f1c4fe746c395922961b5916ed1d7d6e7d4c84851d19ed43cc89980ec953/charset_normalizer-3.4.9-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:32286a2c8d167e897177b673176c1e3e00d4057caf5d2b64eef9a3666b03018e", size = 227179, upload-time = "2026-07-07T14:34:25.586Z" }, + { url = "https://files.pythonhosted.org/packages/e4/56/6c745619ac397e8871e2bcd3cea1eec86b877488f33888b3aef5c3ed506e/charset_normalizer-3.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:83aed2c10721ddd90f68140685391b50811a880af20654c59af6b6c66c40513c", size = 225372, upload-time = "2026-07-07T14:34:27.212Z" }, + { url = "https://files.pythonhosted.org/packages/78/ad/98aae8630ac71f16711968e38a5acfecce41b778bf2f0312851020f565a8/charset_normalizer-3.4.9-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cd6c3d4b783c556fa00bf540854e42f135e2f256abd29669fcd0da0f2dec79c2", size = 215222, upload-time = "2026-07-07T14:34:28.774Z" }, + { url = "https://files.pythonhosted.org/packages/f7/40/9593d54209765207a7f11073c06494c1721e4ca4a0a426c597679bf7f91e/charset_normalizer-3.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ee2f2a527e3c1a6e6411eb4209642e138b544a2d72fe5d0d76daf77b24063534", size = 231958, upload-time = "2026-07-07T14:34:30.345Z" }, + { url = "https://files.pythonhosted.org/packages/b1/27/693ee5e8a18191eb38647360c51cd505013e2bd3b366aa43fd5344c21e3c/charset_normalizer-3.4.9-cp314-cp314t-win32.whl", hash = "sha256:0d861473f743244d349b50f850d10eb87aeb22bbdcc8e64f79273c94af5a8226", size = 155580, upload-time = "2026-07-07T14:34:31.884Z" }, + { url = "https://files.pythonhosted.org/packages/80/3f/bd97d3d9c613013d07cb7733d299385b41df37f0471310f5a73dc359f0b8/charset_normalizer-3.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:9b8e0f3107e2200b76f6054de99016eac3ee6762713587b36baaa7e4bd2ae177", size = 167620, upload-time = "2026-07-07T14:34:33.438Z" }, + { url = "https://files.pythonhosted.org/packages/3d/c6/eee9dca4439b1061f76373f06ea855678cc4a64c1c3c90b50e479edbb8eb/charset_normalizer-3.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:19ac87f93086ce37b86e098888555c4b4bc48102279bae3350098c0ed664b501", size = 158037, upload-time = "2026-07-07T14:34:35.018Z" }, + { url = "https://files.pythonhosted.org/packages/98/2b/f97f1c193fb855c345d678f5077d6926034db0722df74c8f057020e05a25/charset_normalizer-3.4.9-py3-none-any.whl", hash = "sha256:68e5f26a1ad57ded6d1cfb85331d1c1a195314756471d97758c48498bb4dcdf5", size = 64538, upload-time = "2026-07-07T14:34:56.993Z" }, +] + +[[package]] +name = "click" +version = "8.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/d4/81420972a676e8ffea40450d8c8c92943e7218a78fe9b64359836cc9876b/click-8.4.2.tar.gz", hash = "sha256:9a6cea6e60b17ebe0a44c5cc636d94f09bd66142c1cd7d8b4cd731c4917a15f6", size = 338000, upload-time = "2026-06-24T17:45:15.148Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl", hash = "sha256:e6f9f66136c816745b9d65817da91d61d957fb16e02e4dcd0552553c5a197b76", size = 119243, upload-time = "2026-06-24T17:45:13.73Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "cuda-bindings" +version = "13.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-pathfinder" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/21/8464d133752951c154feafb3b65c297e7d80f301183d220bec4c830f1441/cuda_bindings-13.3.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:120fcc53d57903df529c3486962c56528cba5b7d6c57c99537320ed9922c8b86", size = 6073403, upload-time = "2026-05-29T23:11:36.22Z" }, + { url = "https://files.pythonhosted.org/packages/a8/1f/5ef51f5fbaa5d4d3201bb3d7555af028ec1aa4416275ccbf73c9e34e3d2d/cuda_bindings-13.3.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9851b0caa8bfd3bc6fa054eaf57bea7c8e9c3a62db2d2621224677f49f3c53d0", size = 6675244, upload-time = "2026-05-29T23:11:38.664Z" }, + { url = "https://files.pythonhosted.org/packages/51/6b/457ca12dad3ee9bfcc9a545cfd6b64b359ba49de40f776f6e028e678f262/cuda_bindings-13.3.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c5879712accf6e14bb01aa5e67440eb84998b8d104b509cc7a6dc0b8f656a474", size = 6053539, upload-time = "2026-05-29T23:11:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/95/7a/c5e3c34a409b148f5c0f5a4ea374158f95d488862c1dffedf9aa5c639df9/cuda_bindings-13.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:04436a9364059c84b8f9636f359eccda1cf814341f5b670c71d80d2f79dbc708", size = 6674166, upload-time = "2026-05-29T23:11:45.478Z" }, + { url = "https://files.pythonhosted.org/packages/ce/67/5e7dba1ba576dd73da5dee894ca076ca5e959450dfff66d6d510a255d1f7/cuda_bindings-13.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7855c4868aabc0cfae28abbe83d56734bdfbd08f08fc234ac1912a12858bf49", size = 6025351, upload-time = "2026-05-29T23:11:49.685Z" }, + { url = "https://files.pythonhosted.org/packages/39/2a/6d2e9047d1fb243dbaa364b01e0297534b9ed7fd27dba1c9f361519cf69b/cuda_bindings-13.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e32d08f71ebcdf00f0f41eab2eb37e8da94c8ed411cc9f7f7a019ce6b34abe3a", size = 6657965, upload-time = "2026-05-29T23:11:52.227Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6e/2394f8163360f8391f8f1b7e72d300a82724edb81a7b7084c799fbd4c91f/cuda_bindings-13.3.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9efb21c1ee64981e184b9e0ba5eb3179e5ba3d4b51665a6cb52b8ef3d01a7cbf", size = 5920504, upload-time = "2026-05-29T23:11:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/34/c2/ef9b6a63f7dc432712a462c816662e662e00d38caa9b861c8c2588195d03/cuda_bindings-13.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2732904099e0a4d4db774a5fc6d91ee95fae065b4d2ecabb4968c5fe2406c9d7", size = 6476660, upload-time = "2026-05-29T23:11:59.188Z" }, + { url = "https://files.pythonhosted.org/packages/b1/81/bff68ce829999c1e4209c761bbf903b1c06ec570416ddb25020864ad5907/cuda_bindings-13.3.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ab2f74ed65bfef4163ba07a8db16f1085e0729291db12a2423aff84ee8278b8", size = 6013639, upload-time = "2026-05-29T23:12:03.509Z" }, + { url = "https://files.pythonhosted.org/packages/d4/e0/c8a1f0c8f9ffdea4f5fe6dbab89b326cef4d85caf489dad39e209da89416/cuda_bindings-13.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:efd4c814d311ec08c981f6dded1dbe7d4b371067ee4f6c14cccec4bde9590f80", size = 6534419, upload-time = "2026-05-29T23:12:05.633Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/83b1f563925b290f2d11a01a77a84013ba56052fe3653a5bef3ccfbb43d6/cuda_bindings-13.3.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3c772dfff49681541d59630c90f858e173ac926b9c593a2b7123f2a1043cc76", size = 5809771, upload-time = "2026-05-29T23:12:10.422Z" }, + { url = "https://files.pythonhosted.org/packages/12/20/e79b4bfe98f075195afb6343d41c498f9dbd2d161d7021d4d28bceb83581/cuda_bindings-13.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:36febb7c1079d68a981dbbd8d5a67235b399802b82075c9388624719607e52b9", size = 6358584, upload-time = "2026-05-29T23:12:12.767Z" }, +] + +[[package]] +name = "cuda-pathfinder" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/b4/d088047afe39827556df21118cac9ffd20cc3f968c99a7681494d1eb333c/cuda_pathfinder-1.6.0-py3-none-any.whl", hash = "sha256:1503af579d8379c24bdd65528379bc57039b0455be9f5f9686cf8e473a1fce51", size = 54591, upload-time = "2026-07-21T15:03:56.224Z" }, +] + +[[package]] +name = "cuda-toolkit" +version = "13.0.3.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/c7/a79086a62c98befcdb8349656c6f114e2db3b8b2422f6e25c97a7f2a9a3c/cuda_toolkit-13.0.3.0-py2.py3-none-any.whl", hash = "sha256:d693caaa261214ddd7dbb60d68e71cbed884e68c2be7509778f3051da0b91c3f", size = 2512, upload-time = "2026-04-14T00:50:08.173Z" }, +] + +[package.optional-dependencies] +cublas = [ + { name = "nvidia-cublas", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, + { name = "nvidia-cuda-nvrtc", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, +] +cudart = [ + { name = "nvidia-cuda-runtime", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, +] +cufft = [ + { name = "nvidia-cufft", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, + { name = "nvidia-nvjitlink", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, +] +cufile = [ + { name = "nvidia-cufile", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] +cupti = [ + { name = "nvidia-cuda-cupti", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, +] +curand = [ + { name = "nvidia-curand", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, +] +cusolver = [ + { name = "nvidia-cublas", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, + { name = "nvidia-cusolver", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, + { name = "nvidia-cusparse", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, + { name = "nvidia-nvjitlink", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, +] +cusparse = [ + { name = "nvidia-cusparse", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, + { name = "nvidia-nvjitlink", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, +] +nvjitlink = [ + { name = "nvidia-nvjitlink", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, +] +nvrtc = [ + { name = "nvidia-cuda-nvrtc", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, +] +nvtx = [ + { name = "nvidia-nvtx", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')" }, +] + +[[package]] +name = "filelock" +version = "3.32.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/80/8232b582c4b318b817cf1274ba74976b07b34d35ef439b3eb948f98645a1/filelock-3.32.0.tar.gz", hash = "sha256:7be2ad23a14607ccc71808e68fe30848aeace7058ace17852f68e2a68e310402", size = 213757, upload-time = "2026-07-21T13:17:42.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/79/b4c714bef36bc4ec2beeae1e0c124f0223888cd8c6feb1cdc56038116920/filelock-3.32.0-py3-none-any.whl", hash = "sha256:d396bea984af47333ef05e50eae7eff88c84256de6112aea0ec48a233c064fe3", size = 97732, upload-time = "2026-07-21T13:17:41.55Z" }, +] + +[[package]] +name = "fsspec" +version = "2026.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/78/f34251dadb8f3921264a1d9b8946f5e542014ee2614b285261b4e40e6775/fsspec-2026.7.0.tar.gz", hash = "sha256:c803c40f4cf860b49dea58ee3e1c33cb9c790520e233537e1340049f89b82a88", size = 317040, upload-time = "2026-07-28T16:34:51.052Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/3c/6a2bf344106328fd04963664a60b9bb6496fc25df8e962fcdc1367285fb9/fsspec-2026.7.0-py3-none-any.whl", hash = "sha256:b57ddbafedfaef7018c1ecab32aa200a9d7ca26b77965f64e48b70061249d279", size = 206583, upload-time = "2026-07-28T16:34:49.538Z" }, +] + +[[package]] +name = "gpytorch" +version = "1.15.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "linear-operator" }, + { name = "mpmath" }, + { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scikit-learn", version = "1.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/00/cac3e309b2f66518d937ce4d9fa821f167d9070d004fcb070b1780cd1d94/gpytorch-1.15.2.tar.gz", hash = "sha256:380625e93f851b85f772b25c5fb0a6c6d2e3eb2ef667f1e566ab4f95b8775361", size = 2781831, upload-time = "2026-02-28T01:12:55.172Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/70/c419a361b09ccb618b5165daa919003ccdd9c148356f7ff71a710db6bcf0/gpytorch-1.15.2-py3-none-any.whl", hash = "sha256:2112fdc7c0c0bf56a7f2444663cfc80fdfc3e19724399d6303a83d8efdd71e9e", size = 291209, upload-time = "2026-02-28T01:12:52.587Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload-time = "2025-12-15T08:41:46.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, +] + +[[package]] +name = "linear-operator" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "torch" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/1a/0d6d0269cf7327e31a2fe80b274d5bf5001dc4462acbef26240da6ac5dfe/linear_operator-0.6.1.tar.gz", hash = "sha256:3fba49a8080d16f822a5d870f462279cd6afbcf4ed670f4511b38fad96f61831", size = 181898, upload-time = "2026-02-27T23:43:18.716Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ee74708a93704baca5c1ef439817c4cb649f73382c518380ccc5ab335603/linear_operator-0.6.1-py3-none-any.whl", hash = "sha256:a5981c1fcda08df3a210dffb6e8019b4751f4afaf3ffc822c24eaaf56b11eed9", size = 174770, upload-time = "2026-02-27T23:43:17.074Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" }, + { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" }, + { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" }, + { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" }, + { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" }, + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, + { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + +[[package]] +name = "narwhals" +version = "2.24.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/1d/58946e5aab18393e793bd4add6985b95d0e01c3a2d832f38f54468b10dcd/narwhals-2.24.0.tar.gz", hash = "sha256:b5c0f684ccd9d7475b564111e319a4964abcf2baf79d3cf6b1003d06ac9b828d", size = 661143, upload-time = "2026-07-13T10:49:19.086Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/85/a5bfaebfd305ac18b57b0854d74e37e586809061a91fda62f0bd50c8518e/narwhals-2.24.0-py3-none-any.whl", hash = "sha256:42fdedf44e5b2ca7505630d45b4ac3058f38d8485cba9fe1652ca23152df7489", size = 461030, upload-time = "2026-07-13T10:49:17.571Z" }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "networkx" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.11.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/d0/ad/fed0499ce6a338d2a03ebae59cd15093910c8875328855781952abf6c2fe/numpy-2.4.6.tar.gz", hash = "sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda", size = 20735807, upload-time = "2026-05-18T23:37:14.07Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/49/ec46835a70be8fa6446c495126ac84fdb28cb2558e1620ffb87a10c8b64c/numpy-2.4.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0280e0356c0829a18d9de1cb7eee50ec22ca639878d7240307ca0943d73cd2c4", size = 16969194, upload-time = "2026-05-18T23:33:13.503Z" }, + { url = "https://files.pythonhosted.org/packages/0e/0d/f5957185c0ee2f3e12f78715aa9e3b353fd83633316c8532b38faa37e3f6/numpy-2.4.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:110f8b71aacb688ec69062bb7f6938a0f8acb01b7c1c4beb453c65b6d234584d", size = 14964111, upload-time = "2026-05-18T23:33:17.795Z" }, + { url = "https://files.pythonhosted.org/packages/ad/40/40a40ee0ddf7ceb782c49af278894b686e586d65d8c1889c8b5da01a3d7d/numpy-2.4.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4cfe66903cc32a9921a6733d96b19bb6abf310397581bbad89c228f5abaf0ee8", size = 5469159, upload-time = "2026-05-18T23:33:20.654Z" }, + { url = "https://files.pythonhosted.org/packages/63/13/f9a8046535cb21deae82f8d03de9617e08882d274fad2539630761888228/numpy-2.4.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8155154c7c691289fe18f510b5d4657c68c67989f293f0535a91360392ff6538", size = 6798936, upload-time = "2026-05-18T23:33:22.987Z" }, + { url = "https://files.pythonhosted.org/packages/33/a8/6fa8c1a345a8c85dbb21932c447bee07c30a2c2a3f31e369c0a84b300147/numpy-2.4.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ab0a9c4ffb1a6d95ef519fe4247dba8eb6b18ad93999f76b7f657039acabd47", size = 15966692, upload-time = "2026-05-18T23:33:26.62Z" }, + { url = "https://files.pythonhosted.org/packages/02/03/74fe2a4cb3817d94d86402f2506554130a2f01414e299b5a843e5a8a957f/numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:89cd468399cfd2504718f0ba50e410dca55a170b61a02ad92bb18c8a65186e93", size = 16918164, upload-time = "2026-05-18T23:33:29.955Z" }, + { url = "https://files.pythonhosted.org/packages/c5/80/3615be3313f7e7696609bc194b9f0101da809df79e859bdb84e0cd043f46/numpy-2.4.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2d37ab77531417474168eb79d6d80b14f821a966818505d03013d0833edb7a8", size = 17322877, upload-time = "2026-05-18T23:33:34.724Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ac/a691e0fe2675e370d0e08ff905adc49a1c8830e8cae03efe4477e92cd55d/numpy-2.4.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f407cb6b8e9d6d8c626bc73c945db1706035af8fd632295547bf1c9e46d092d6", size = 18651487, upload-time = "2026-05-18T23:33:38.217Z" }, + { url = "https://files.pythonhosted.org/packages/15/a7/9bc1cd626d7bf6869bfedf27b91b6ab5dd607758bf8e959d6fa80c6a59cb/numpy-2.4.6-cp311-cp311-win32.whl", hash = "sha256:ddea102b48f9e339f3948bf22040944184627a30fdf7f858667673b9c5f033c8", size = 6233945, upload-time = "2026-05-18T23:33:41.331Z" }, + { url = "https://files.pythonhosted.org/packages/c5/31/7fc6239c12bce7e931463251cca4426c465e1876ba3cc785402ef4dd8f4e/numpy-2.4.6-cp311-cp311-win_amd64.whl", hash = "sha256:1e254a00cdf42b1e4d5b3d68d33af63268d41340d8885df2ab6470f2e1500147", size = 12608406, upload-time = "2026-05-18T23:33:44.131Z" }, + { url = "https://files.pythonhosted.org/packages/27/83/140f85a466595a16382996a1bf06b2b54bcd597488921b0c9daaeeda72af/numpy-2.4.6-cp311-cp311-win_arm64.whl", hash = "sha256:ed9749eef4cbd126da3dc1d6bcb3a57f5eb7ac6a6484146bdbf743f552dfc577", size = 10479528, upload-time = "2026-05-18T23:33:50.725Z" }, + { url = "https://files.pythonhosted.org/packages/95/2a/3d7b5ac8aac24feaf9ad7ed58f45b0bbc06d37e4338ae84c9f2298b570f9/numpy-2.4.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:001fbb8e08d942dd57599e781f2472269ee7f2755fae407b4f67b2f0b17da3f1", size = 16689119, upload-time = "2026-05-18T23:33:54.065Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/92c4c131527599e8288d6918e888d88726f84d805d784b771f32408aeaef/numpy-2.4.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ebfb099f8dcf083deef3ac1ca4c1503f387cf76296fcb3816b66f5ecb5f54fdb", size = 14699246, upload-time = "2026-05-18T23:33:57.621Z" }, + { url = "https://files.pythonhosted.org/packages/ad/fe/c0a6b7b2ca128a8fb228575147073b660656734b8ebe4d76c8fd748dcc79/numpy-2.4.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3213d622a0283a39a93d188f3cf72b26862df52fbb4ca3697f51705016523d41", size = 5204410, upload-time = "2026-05-18T23:34:00.302Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d4/9770d14ba719432bb90a421bfd443872ed0f70f7264b64bec12ea363d5fd/numpy-2.4.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:357cc07a6d7b0b182ff02249616a03742827ebb1277546b5c7cd7f7620a45698", size = 6551240, upload-time = "2026-05-18T23:34:02.852Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c6/50a46a6205feba2343f1d6d17438107c5dc491ed1c736e6ea68689fd906b/numpy-2.4.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f9fb9157b4ce2971008323afe46053787b526ef624fea915b261468a8421a0f", size = 15671012, upload-time = "2026-05-18T23:34:05.485Z" }, + { url = "https://files.pythonhosted.org/packages/99/60/14115e6364fa676c5397c2ad3004e527e9aa487abf5d0706ec81bbd08529/numpy-2.4.6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90f9849678c75fe7afa2d348ac842c168b0a4d3d61919687216dfc547976d853", size = 16645538, upload-time = "2026-05-18T23:34:09.265Z" }, + { url = "https://files.pythonhosted.org/packages/ae/c5/693cbe59e57db94d2231fa519ca3978dc9e19da5a8f088588f5c6e947ff2/numpy-2.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c1a2af6c6ef86344a6b0db6b97834208bf598db514f2b155042439b62605601a", size = 17020706, upload-time = "2026-05-18T23:34:13.053Z" }, + { url = "https://files.pythonhosted.org/packages/ef/fc/85b7c4eff9b4966ade25c2273cf7e7012e92366c032058653934b37de044/numpy-2.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e5805d5a22fd19c8ccff10a9561f9df94436b0545619ea579db2d3c35294bce2", size = 18368541, upload-time = "2026-05-18T23:34:17.024Z" }, + { url = "https://files.pythonhosted.org/packages/f6/81/e1b27545deedce7f4a0b348618c6b62d74e36a4dc9ccd42f3eb2f85eee32/numpy-2.4.6-cp312-cp312-win32.whl", hash = "sha256:e3eeb0aabd6bd5ce64faae67e9935203a6991b4bc2a485a767fbafb2c5125f45", size = 5962825, upload-time = "2026-05-18T23:34:20.3Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ca/feab00bd44aa5fe1ad2c18f08b4d3bb92e26484b0b1d1443897809ed528c/numpy-2.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:d8e8286dd7cea7895157318d1b91cdacac64c479f3cbc8dce548331728484751", size = 12321687, upload-time = "2026-05-18T23:34:23.095Z" }, + { url = "https://files.pythonhosted.org/packages/63/cf/5a6d34850a39d1093558564f77ee8e8e0bee5061151b8f05a55711001ec7/numpy-2.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:4081eb135ac24158bd51cdfbef16f1c64df7063b1143f24731387137c092bec8", size = 10221482, upload-time = "2026-05-18T23:34:25.876Z" }, + { url = "https://files.pythonhosted.org/packages/fb/82/bdab26d7438c6791ca31b7c024ca37c1eab8b726ba236129005cd4a06e45/numpy-2.4.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:511dbaf848decaaaf4b4ca48032619fb3138710c4bf7da7617765edad1ef96b0", size = 16684648, upload-time = "2026-05-18T23:34:29.41Z" }, + { url = "https://files.pythonhosted.org/packages/1b/30/a80189bcc7f5e4258b3fbc3968d909d1756f54d023299ecc39ad6fdb9ef8/numpy-2.4.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bf162abab1c1a736333192707cef898e735a5ca00f38f27eeedf44b39d9e85eb", size = 14693902, upload-time = "2026-05-18T23:34:33.013Z" }, + { url = "https://files.pythonhosted.org/packages/97/12/70b5d0d7c15e1ebb8a6a84a8caa1d19e181d84fb58bb6d70aca29099dec1/numpy-2.4.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:043191bfa8eab18c776647b62723ac9dddece59743b13f49b2016094129c2b3f", size = 5198992, upload-time = "2026-05-18T23:34:36.132Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8c/ebd2a8f8a83541f8d38cc5667e8c2b69cecfd30da6e45693e8158857d44b/numpy-2.4.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:6180d8b35af935aed8ece3a85e0a43f87393ae0ac87c8d2c8bd2c993f7270ef3", size = 6546944, upload-time = "2026-05-18T23:34:38.484Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c5/7b863a97a91671a0338f4253bd3b5a3d3852f0692dae91711c9f4a10e787/numpy-2.4.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72fbe16c6fac95aedf5937fa873445cec2110be35d8a4e9433d7501fd98dae6b", size = 15669392, upload-time = "2026-05-18T23:34:41.257Z" }, + { url = "https://files.pythonhosted.org/packages/a5/9d/3584b9984ca4c047aea75214ce1a4c4c73d849bd71b604264b7f5653f8a8/numpy-2.4.6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7830bab239b79cda9c08c2da014761cafb48da6150e1da17ac06283f43b6089", size = 16633220, upload-time = "2026-05-18T23:34:45.075Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/7c67fba23bd98caec7c99261f3a16072ade14813486b0282cb29846de832/numpy-2.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ef4aea96ce4d3b074422cb4f2f64e216bf9e213004bb58ecfdf50ea02ea8eb9a", size = 17020800, upload-time = "2026-05-18T23:34:49.065Z" }, + { url = "https://files.pythonhosted.org/packages/d9/5d/3b6725cb31d983c5e66916f5d36f6d7e5521129e4c4404d64f918292a5b6/numpy-2.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dfa20cc6ca228e6b155b11da03825975ce66aea520985dbbddf0f2a5a495c605", size = 18357600, upload-time = "2026-05-18T23:34:52.709Z" }, + { url = "https://files.pythonhosted.org/packages/f7/da/2ccc6c2fe8898dee01d90c75c5f5f914a23daf99e3e0f59516a08760c8b5/numpy-2.4.6-cp313-cp313-win32.whl", hash = "sha256:56b39e5e0622a09a25bf5baf62f4bcf0cb8a41ae6e2819cf49bbc5a74c083f91", size = 5961134, upload-time = "2026-05-18T23:34:55.618Z" }, + { url = "https://files.pythonhosted.org/packages/b5/cd/9cc4dc876fb065d5c220aae4d5e14826b2715331bb7618ce1fb07a679d99/numpy-2.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:c4fc99836233ea196540b17ab0983aff60ed07941751930f5f4d05bc3b3b7359", size = 12318598, upload-time = "2026-05-18T23:34:58.928Z" }, + { url = "https://files.pythonhosted.org/packages/39/1e/c0bcba1f8694116485fe28fd1be698c278fcda4141c5b0e53a2aed8b12a8/numpy-2.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a7c711e21628b52034bb5ab8d1bce291f752fcc5e92accc615778acee1ff4778", size = 10222272, upload-time = "2026-05-18T23:35:02.167Z" }, + { url = "https://files.pythonhosted.org/packages/63/6d/cc5619247c8f4204e507f5883528372e4ac4bb189e579fb859a12e480b1f/numpy-2.4.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:112b06a867b235ef466ed3508ddf0238050df9c727cafb5301ac385b899189a1", size = 14821197, upload-time = "2026-05-18T23:35:05.468Z" }, + { url = "https://files.pythonhosted.org/packages/00/58/f1c39161c87d9e9bed660f1ed4bafc0e403d5ec9650b6dd77aead07d489b/numpy-2.4.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:eaf7fa2de5c0be8ae6ff8e9bea2ccd725e980541244521d8d4b5f3354a27babe", size = 5326287, upload-time = "2026-05-18T23:35:08.693Z" }, + { url = "https://files.pythonhosted.org/packages/af/57/3917ab0fd97f271a8694513581b8a36c655f111c446852c302f04ccdb6fc/numpy-2.4.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:7265a2f3d436e54ef9f2b52b5c937e6be778781bd97a590319d7348f1c1ca997", size = 6646763, upload-time = "2026-05-18T23:35:11.459Z" }, + { url = "https://files.pythonhosted.org/packages/eb/0f/037e64c494b67581ae18193d770adef354c41f3f2c8ebf865602d949bf8f/numpy-2.4.6-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f74a575920ab21fe304421a3fc28793d82e299cae9eccb37084e9fc7f3617c20", size = 15728070, upload-time = "2026-05-18T23:35:14.79Z" }, + { url = "https://files.pythonhosted.org/packages/21/a6/5d2bae9c9542eb4df16dc9c46dc79c186e9bad53805dfa5399a6023c6db0/numpy-2.4.6-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ede83e07a75dd06bc501566c1eca2afc0d61677c1472ac9ad93fdee6e638a48d", size = 16681752, upload-time = "2026-05-18T23:35:18.836Z" }, + { url = "https://files.pythonhosted.org/packages/92/14/23d1dfb410ae362cd59ce53e936b1513d545eb40db3949ced632e19a459e/numpy-2.4.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:68bb27509ac1b9a3443094260f6326150663b06abe40b73a2f81160623da5b67", size = 17086024, upload-time = "2026-05-18T23:35:22.52Z" }, + { url = "https://files.pythonhosted.org/packages/4b/6e/23595a2c642cdf3bc567877064bdd7f91c8b0038a4453cf2daf7248eafe9/numpy-2.4.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a0df0043bdb289bde1f62da130d20df23d58b45429f752bc7a8fc5325a225ecd", size = 18403398, upload-time = "2026-05-18T23:35:26.398Z" }, + { url = "https://files.pythonhosted.org/packages/8a/90/0ac3bc947217e66dec77e7cbc6a1979d1af70b6461b82f620d3bccd5e4c8/numpy-2.4.6-cp313-cp313t-win32.whl", hash = "sha256:29a287e0cf63ff528da061de6b9f64a4618da591ca1046aafc54062e40ca7eab", size = 6084971, upload-time = "2026-05-18T23:35:29.387Z" }, + { url = "https://files.pythonhosted.org/packages/77/71/5673e351671a1d2bd6063b91b44f70c0affea7d1516fa7a6572941ba4aa1/numpy-2.4.6-cp313-cp313t-win_amd64.whl", hash = "sha256:25c692919ac5a01f170a3bfcd62d745b24fd095c353d50812637d6fcab442e75", size = 12458532, upload-time = "2026-05-18T23:35:32.175Z" }, + { url = "https://files.pythonhosted.org/packages/3f/88/19d3503c5046e688f049274b27a3ef3d771152fa80d3ba3d01a3dff61abe/numpy-2.4.6-cp313-cp313t-win_arm64.whl", hash = "sha256:1e978ec1e8bd0e0e4de6bb75de9d30cbb74db6b6a2bb727618613703ca0167dd", size = 10291881, upload-time = "2026-05-18T23:35:35.465Z" }, + { url = "https://files.pythonhosted.org/packages/f8/91/3ab2044d05fd16d343c5ac2e69b127f1b2854040dd20b193257c78028bd3/numpy-2.4.6-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06ca2f61ec4385a07a6977c55ba998a4466c123642b4a32694d3128fce18c079", size = 16683458, upload-time = "2026-05-18T23:35:38.353Z" }, + { url = "https://files.pythonhosted.org/packages/8e/62/764ce66fa4147ae6d73071a3abf804ffe606f174618697c571acdf26a7c9/numpy-2.4.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:38efbc8de75c7a0fc1ac190162d892787f3f47b57cc291231aafee36b80982b7", size = 14704559, upload-time = "2026-05-18T23:35:42.14Z" }, + { url = "https://files.pythonhosted.org/packages/60/61/23f27c172f022e04025b7dc2367f4d63c1a398120607ec896228649a6f48/numpy-2.4.6-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:d581b735e177fdcdce6fed8e7e8880a3fb6ee4e3653a3ac6af01c6f4c03effc5", size = 5209716, upload-time = "2026-05-18T23:35:45.377Z" }, + { url = "https://files.pythonhosted.org/packages/03/71/21cf70dc6ea3e3acb95fc53a265b2fc248b981f0194ceb5b475271b8809d/numpy-2.4.6-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:0a041d3d761dc3c35cc56ce0351506a02bcbc25f7b169f652435141a17db9096", size = 6543947, upload-time = "2026-05-18T23:35:47.926Z" }, + { url = "https://files.pythonhosted.org/packages/d5/91/64288395ee1799bd2e0b04a305dce9666da90c961e1f3fe982a05ee1c036/numpy-2.4.6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40fdc1ae7125e518ea98e53e69a4ebc27e1fd50510c47b7ea130cf21e5e1d42b", size = 15685197, upload-time = "2026-05-18T23:35:50.863Z" }, + { url = "https://files.pythonhosted.org/packages/f3/eb/ebffaa97dc55502df69584a8f0dcf07f69a3e0b3e2323670a2722db9aa39/numpy-2.4.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a2c306dea656c12c68f51f4cea133cbe78ca7435eb28c735eac1d3ebe73be6e8", size = 16638245, upload-time = "2026-05-18T23:35:54.752Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0b/54f9da33128d7e350fab89c7455902eeae70349ee52bddb448dc4a576f45/numpy-2.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:33111801a01c12a8a1e3721f0a9232f8cfc8ae2c6b7098167e6f623c6073f402", size = 17036587, upload-time = "2026-05-18T23:35:58.355Z" }, + { url = "https://files.pythonhosted.org/packages/b6/f0/fdebc1052db1cc37c64beb22072d67cd6d1c71adca1299f53dec2b5e20d3/numpy-2.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae506e6902902557576a26ff33eda8695e7ecb3cb36c3b573a0765dee114ebdb", size = 18363226, upload-time = "2026-05-18T23:36:02.845Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b4/298628d98c72b57e57f7165ae6a481a1deaf6f3c28262a6e4c739c275930/numpy-2.4.6-cp314-cp314-win32.whl", hash = "sha256:aaf159caa35993cb1f56fb9b8e4610d35758e7ca005412eb1daa856a78c9c4b1", size = 6010196, upload-time = "2026-05-18T23:36:05.92Z" }, + { url = "https://files.pythonhosted.org/packages/df/ac/46de6dda46478f7942f839e094970be2d4a861e005c4b3bf07c92e291a09/numpy-2.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:b507f5c4c1d508876d1819b6bf9a49d365b96320b5d4993426b33a23ca4b8261", size = 12450334, upload-time = "2026-05-18T23:36:09.107Z" }, + { url = "https://files.pythonhosted.org/packages/78/92/b8b798ac784102c0da830d2257d59358e3d3d90d1e2b3f2575dad976c5cf/numpy-2.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:6f41ae150c4e32db4f3310cdaf64b1593a03dbabe29eec77fc9b50fe64061df6", size = 10495678, upload-time = "2026-05-18T23:36:12.766Z" }, + { url = "https://files.pythonhosted.org/packages/30/34/ec28d1aa8115971537c01469ab2011ee96827930f0a124de1000cc2a7ed7/numpy-2.4.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ece3d2cfe132e7d51f44a832b303895e6f2d499c5e74dfbdb06ee246147a304a", size = 14823672, upload-time = "2026-05-18T23:36:16.473Z" }, + { url = "https://files.pythonhosted.org/packages/16/bd/f6d1fede4e54e8042a7ff97bb495510f3c220f94bcd9e8b228e87c92cc0d/numpy-2.4.6-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:e3e5193ef5a3dc73bceee50f7fdc2c90dbb76c42df8d8fae3d1067a583df579e", size = 5328731, upload-time = "2026-05-18T23:36:19.767Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f0/e105b9e2fd728a9910103884decd6951d9dd73896b914a98d9a231de02ee/numpy-2.4.6-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:17f9ade344e7d9b464a084d69bcf18fc691cb1db67c62ed80820bf4926d78f0e", size = 6649805, upload-time = "2026-05-18T23:36:22.266Z" }, + { url = "https://files.pythonhosted.org/packages/82/dd/1206a7ca6ab15e3f02069707ca96222e202af681bb73756da7527f3cb837/numpy-2.4.6-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9cd5ffd25db4e7ba6a375693b3fc0fc1791ec636c17db3720da19bde7180ec43", size = 15730496, upload-time = "2026-05-18T23:36:25.713Z" }, + { url = "https://files.pythonhosted.org/packages/51/e7/38d3ea825dcab85a591734decb2f6c67caa7c8367d374df1a1c3842f9b07/numpy-2.4.6-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d92c3819208a60205a12a245c91ad70cb0a85336659b19b834205573ac8456e", size = 16679616, upload-time = "2026-05-18T23:36:29.652Z" }, + { url = "https://files.pythonhosted.org/packages/93/b7/caabfdf53edf663e0b4eb74d7d405d83baef09eb5e83bcd32d601d72b93e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e85b752a1e912b70eaad4fafbd4d1238007ab221de2009b9a2f5ae7461239895", size = 17085145, upload-time = "2026-05-18T23:36:33.449Z" }, + { url = "https://files.pythonhosted.org/packages/f9/45/68d7c33a6bcf3e5aa3bdbd57a367e6f615286dfd6482f97e8ffeb734306e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:29cb7f67d10b479ff07c17d33e39f78c07f71c40ef30d63c153d340e96cd3fb4", size = 18403813, upload-time = "2026-05-18T23:36:37.369Z" }, + { url = "https://files.pythonhosted.org/packages/9c/50/0753655aa844c99cd9e018aacf76f130f1bd81d881bb74bc0aef5d73a8ba/numpy-2.4.6-cp314-cp314t-win32.whl", hash = "sha256:260a5d70215b61ab4fadf5c7baacd64821842975eea312125ed3c39a6391b063", size = 6156982, upload-time = "2026-05-18T23:36:40.817Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d4/7c67becf668f973cb490cec3e98dfd799d866f9c989a54d355672cfa0db6/numpy-2.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:81a1cca95ed5bb92aa8b10dd2cdc9a0d3853a50fad926c28b5d7e8ea54389627", size = 12638908, upload-time = "2026-05-18T23:36:43.996Z" }, + { url = "https://files.pythonhosted.org/packages/43/bb/e1c71a4295b1b1d1393d50dbb4f2a36283c6859d9d3892e84f00ec5a91d5/numpy-2.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:0c9136e14ed34a9e343a31c533d78a9813a69a3148332bce5e9821cb2f996e66", size = 10565867, upload-time = "2026-05-18T23:36:47.114Z" }, + { url = "https://files.pythonhosted.org/packages/de/12/b422cc84439adc0d00de605bf4a308890ae5c26f2c71fbd73e5d08fbb0dd/numpy-2.4.6-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:55cced7c52e981362f708ad635198e97a752dfba412cc03c23bbf3bd8d5cd662", size = 16847511, upload-time = "2026-05-18T23:36:50.673Z" }, + { url = "https://files.pythonhosted.org/packages/44/53/f481bef68011740f8849418d82db07230e825013f31f4eef5ba5b805316a/numpy-2.4.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6da64deb6b8ed903e7560180a92f2d804ee1ba5eeb849ac2748b8c1aba1f6d7", size = 14889064, upload-time = "2026-05-18T23:36:53.879Z" }, + { url = "https://files.pythonhosted.org/packages/7f/57/42ed575c10ced8af951d426bc4e1f8aff16fd851db33f067036215a7f860/numpy-2.4.6-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:68a5124b13fa6cc2086764a20005d30bc0548146f7f5322f02fce212ca14317f", size = 5394157, upload-time = "2026-05-18T23:36:57.194Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ef/f66cc724fcc36c1e364c67f51ae9146090b8b584f27d58b97fdae3edd737/numpy-2.4.6-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:948424b06129ce883307e8cff868c31396d8dc7630a59c61d70d98dbe70f222c", size = 6708728, upload-time = "2026-05-18T23:36:59.575Z" }, + { url = "https://files.pythonhosted.org/packages/1a/9c/c531f2293b91265d8b48e9b329f54fdd7ffae73cb4134ea10cca4237e9cc/numpy-2.4.6-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5dbbdb29840ca3d91ee0fece42fc29278886d908280bfec0a5846c6f901a3eb0", size = 15798374, upload-time = "2026-05-18T23:37:02.674Z" }, + { url = "https://files.pythonhosted.org/packages/1a/b0/413077f6b1153ed3cba361401c6783bbad6114804a000cc22eb71c13e190/numpy-2.4.6-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8ad03c0965fb3c692200e74d458ca28c1dbb4ce96f9a479a8aa041ad5fabca02", size = 16747286, upload-time = "2026-05-18T23:37:06.327Z" }, + { url = "https://files.pythonhosted.org/packages/15/ce/e5ec180bc41812edcd8daeb8639d205622c0e8c02259d8ab25a0201b3c2a/numpy-2.4.6-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2803abfebfc990042cd494d8ce2d5f82e9d847af6d35ec486923aa19dbad5e73", size = 12504263, upload-time = "2026-05-18T23:37:09.715Z" }, +] + +[[package]] +name = "numpy" +version = "2.5.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", +] +sdist = { url = "https://files.pythonhosted.org/packages/22/fd/89965aa4ac08c74998539fcbf24fa3540f3e15237fbeb6bcf9c908f4aade/numpy-2.5.1.tar.gz", hash = "sha256:a48a113e6afea91f5608793bafa7ef2ad481fefbda87ec5069f483de61cb9fa3", size = 20755553, upload-time = "2026-07-04T17:08:00.933Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/7b/14687aa674250e5e546f616f486b0d56d3631cd5b2415739141ce40bdcea/numpy-2.5.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2c889b56fe48b1018f764b0eec8df59ab654e9148aa91faa12596043500de277", size = 16801574, upload-time = "2026-07-04T17:06:12.423Z" }, + { url = "https://files.pythonhosted.org/packages/e1/19/cc5bb2a3f2913d27d6dbb2c78d25921fabaedc6741d4a5a615a11f3c5bf3/numpy-2.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ab451b59c5643c570974c43aef780703ef1d3b4965d2be07afd530615a9358d1", size = 11772250, upload-time = "2026-07-04T17:06:15.726Z" }, + { url = "https://files.pythonhosted.org/packages/42/77/fdf34a71dd30f54979b18603bee915e0aaf825b07afe79acd60b04b691e2/numpy-2.5.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:78798bd5b9ad744056af8efa90e3b9ddaa53272a0848a483084a1cc0a13b2dc0", size = 5331516, upload-time = "2026-07-04T17:06:17.913Z" }, + { url = "https://files.pythonhosted.org/packages/ce/e2/eb7efa015b4cce41e2517bf182a7fce0d7d5b9d9ed76a29bfa0f4fe4505c/numpy-2.5.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:2ae0ca40bcb22d6ba59c1dfd5446f49940b0f2d821fde133f10dda11f816b84e", size = 6664863, upload-time = "2026-07-04T17:06:20.02Z" }, + { url = "https://files.pythonhosted.org/packages/a9/4b/a2b32dd94ee9ffbeecb28152240042a3949db33b1c834d44090b80e1b3b8/numpy-2.5.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:61ac47e772e6b8ea489e1d2f441a34c5c3ac17327e7ce294cbdf535795ad4e75", size = 15167977, upload-time = "2026-07-04T17:06:21.621Z" }, + { url = "https://files.pythonhosted.org/packages/b8/a9/6e73d68500f80773f65f0654ea932019d6694329a0eb0ed0533de38df376/numpy-2.5.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:59fda5e192b570217ec2580c96f00e9a7e12ef6866a900eb089b62c1a32545ca", size = 16672469, upload-time = "2026-07-04T17:06:24.064Z" }, + { url = "https://files.pythonhosted.org/packages/24/7d/ad3e59015135f5261c95fd4cafeff159c955febd83a99a1d9250c4233815/numpy-2.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f7119ebff1a9829e9f431a4f9d28e703023bb6b9fe7c8f724467dbfc27c94ab3", size = 16527531, upload-time = "2026-07-04T17:06:26.69Z" }, + { url = "https://files.pythonhosted.org/packages/83/d0/a39b2fbcde9cb17a1dac678f254b33a6336298af9df338824c685425d5e8/numpy-2.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e824c2acf8862052246be5a44c15da1777940c60d010dd2aab897824d9c430f9", size = 18431940, upload-time = "2026-07-04T17:06:29.521Z" }, + { url = "https://files.pythonhosted.org/packages/04/12/cff070947791c1ed425ff76413189adbdc2fbe215eba7ce7fa454a03c7f8/numpy-2.5.1-cp312-cp312-win32.whl", hash = "sha256:08d60c810432eb83360958dea0999ac4cfb94531ea8efcbf0b7f277c2068aeb2", size = 6066764, upload-time = "2026-07-04T17:06:32.571Z" }, + { url = "https://files.pythonhosted.org/packages/65/66/53f31807a48a750f9d748da273bc3fcedd12b27ff1f3e373bfec55ef2dc0/numpy-2.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:f7d60026c0bdb1380e83bfa7a0419c4577ee4b9a08880afcb6dadeb74c649fa2", size = 12430966, upload-time = "2026-07-04T17:06:34.926Z" }, + { url = "https://files.pythonhosted.org/packages/2b/2a/d1a88066b1c14186f5d3c0d18c94f17b064511982bab0578d49ee9d43c29/numpy-2.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:17a25e09640602e10bc8de0e6fa2b3fd68eedd84ba6d7842dc8f32f9ab87bd0b", size = 10350488, upload-time = "2026-07-04T17:06:37.785Z" }, + { url = "https://files.pythonhosted.org/packages/eb/07/ec2a3f0c91761581d4b7104a740791800025983f9a4dc4e73f91a99aeac4/numpy-2.5.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0bfebd8695f9863592fe744be833a258120b14a9f39da255e8aa8fade2c0ddd1", size = 16796419, upload-time = "2026-07-04T17:06:40.37Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ab/ddb499fc4f8780354395face5b65c7fd107bcd6e1d667a5f07d046956f6f/numpy-2.5.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:30b44a6b53a7ae63c54c089a8726e5563ed302716c5b7ccc85afade40b0e7ff6", size = 11765832, upload-time = "2026-07-04T17:06:42.768Z" }, + { url = "https://files.pythonhosted.org/packages/88/b3/3c28c558a09fc72100c646dac6d2fce8e834c471b0edca01a29996706117/numpy-2.5.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:6165343f81b56ef8f514f396989e529b61d9dc709b99421b07e9f3e698e2287d", size = 5325143, upload-time = "2026-07-04T17:06:45.466Z" }, + { url = "https://files.pythonhosted.org/packages/5e/0e/ce19b985bb15c596f4f05954e76cccc77c845083b3b8f938a6c68e523128/numpy-2.5.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4939237038ada79308dda3204ac6462df056b5672b2e25db1149cf873668b3e1", size = 6659749, upload-time = "2026-07-04T17:06:47.288Z" }, + { url = "https://files.pythonhosted.org/packages/2e/20/1ee6614d64332a1bba6411f38e68cb79eec1b2459e20a623777c5c5492a2/numpy-2.5.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c6759f538fb912fc46de0a6b1758ccf7b57bc7c7ebebc23974fdac3de8db0cd", size = 15164716, upload-time = "2026-07-04T17:06:49.494Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a7/2bcd3fdbb87804755c35b729bf8709d62025c5f4cfd7d5b2415997097515/numpy-2.5.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9726558e8db4a5bf7929a70ae50f63abda4daf0efe810e3bfbab95976f75fc1a", size = 16661440, upload-time = "2026-07-04T17:06:52.061Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d7/a41e3310c886fe457d36e670bbf24fae411aca8a7b6ad92a32afd924077c/numpy-2.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3935f3b419b244a02732676fa5317a9193cc596a4c0646db07e5b421229ac9f7", size = 16526305, upload-time = "2026-07-04T17:06:54.605Z" }, + { url = "https://files.pythonhosted.org/packages/53/75/4333a9a707c1edd3a4e1a0c58eca52c0f31e55089fa80db02b5565b24df7/numpy-2.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc932a65ded7ce9013d120845a2514dcccb1a67bfc8deb8d37633762951904a6", size = 18423008, upload-time = "2026-07-04T17:06:57.54Z" }, + { url = "https://files.pythonhosted.org/packages/ee/90/e314a32b1c11a2ffe818ddad3a57b50b4b6e1b6c487192eb50cdef0415d0/numpy-2.5.1-cp313-cp313-win32.whl", hash = "sha256:4b4ff1608417eb7a59da7b967bbb798cacfe071d2caf526a24281cd562072ed9", size = 6063885, upload-time = "2026-07-04T17:07:00.14Z" }, + { url = "https://files.pythonhosted.org/packages/10/70/800b3fca480af32df9e8ea9f3d4a0c8feb4b32d7f195d174eabbda4829ad/numpy-2.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:6c3fe51bc6a16453d452997053454f309e8e0ed7b42d6b361ce4ac8c32913d74", size = 12425674, upload-time = "2026-07-04T17:07:02.387Z" }, + { url = "https://files.pythonhosted.org/packages/8b/0b/196350c122f50f6ca56846f2d71efd5e0d24b7b2e07355e019b2e2c7a11e/numpy-2.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:f7feb014281029e628ba2d5a007407443b06e418b6fe451d1e2adcbc8eba0107", size = 10350256, upload-time = "2026-07-04T17:07:04.878Z" }, + { url = "https://files.pythonhosted.org/packages/db/f4/731b6085a83faf6ca843394cbd5e217280c214399f7e8b21b9f552af0ae2/numpy-2.5.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:7c786fe9a5bbe360022e584c5a34cf6b54265c71bd7ec8ac3d8fec38968071f8", size = 16795063, upload-time = "2026-07-04T17:07:07.374Z" }, + { url = "https://files.pythonhosted.org/packages/bf/64/0e215f2048dd11a55bb989ed41b3585ef57452404e638d703a211a3e4157/numpy-2.5.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32985c896d897419ef8da6917872d80b78ad0ea26d85b23245c7366ffde76d75", size = 11776652, upload-time = "2026-07-04T17:07:09.907Z" }, + { url = "https://files.pythonhosted.org/packages/b5/59/2b844c7a6e9deff69b404a66221e1542937734f65d5e6e39411876053862/numpy-2.5.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:efd736408cc97c79b9e6917338dfc8f06013b2274f992e96b1d9a81a71e2a2c2", size = 5335944, upload-time = "2026-07-04T17:07:12.227Z" }, + { url = "https://files.pythonhosted.org/packages/86/51/9bf7cb2cabcebc9e017e4ec7e6322b378317a542c08b4cb68479c1efc716/numpy-2.5.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:ab84dc6b074fa881cae55bea94cc4f68e285181ba7f32497bf7dee6b1496165b", size = 6656266, upload-time = "2026-07-04T17:07:14.368Z" }, + { url = "https://files.pythonhosted.org/packages/83/3e/fb7615b211b82a32f44d5180a6d421b61f84d4fadd578b48ba4ac34e189f/numpy-2.5.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caf3e317d33d60c37986b452613f4ab51246d0691350c03d0cb4a898627f4a95", size = 15179720, upload-time = "2026-07-04T17:07:16.272Z" }, + { url = "https://files.pythonhosted.org/packages/41/5f/0f992cb24560673496c5d68de61913b57166ce530ffda07c1f280e0cc464/numpy-2.5.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:54ad769f17bc2d833b620851989f62054fb9ab93c969d9e1dc3c8e3d56beea21", size = 16664835, upload-time = "2026-07-04T17:07:19.021Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2f/97d6475ee91afe2587797d09446f9d3e475ad4cb681662d824809327b75a/numpy-2.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c12afb53450fa976d4c681c50a7423729a4c51c0465ed9f32b8a9cabbc472373", size = 16539135, upload-time = "2026-07-04T17:07:22.015Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5b/4db81e4ba0be7e2776b1de68c82aa862c7f8ec27e1b4927d4ae075e20678/numpy-2.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e8c11c405efc5ff6816d5983c96cdfa215bab3428961243af3ff59b228490438", size = 18426684, upload-time = "2026-07-04T17:07:24.941Z" }, + { url = "https://files.pythonhosted.org/packages/1f/64/c0ba2d90724d450279a7df8f32057241070250a26a7e2b5337d77347f481/numpy-2.5.1-cp314-cp314-win32.whl", hash = "sha256:f2479a47f8d5932d1718168a681ad6e536a9df484c83cfcf9de365e164537ace", size = 6116103, upload-time = "2026-07-04T17:07:27.622Z" }, + { url = "https://files.pythonhosted.org/packages/c1/1a/837f9ed7405adcd7a40538792eb169eddd8fa5630c16a1ef49dae71a30f4/numpy-2.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:24d0eb82c0541d3415a33425db64ae439dffccd7b4dbcb30e7c35120205c506a", size = 12562177, upload-time = "2026-07-04T17:07:29.887Z" }, + { url = "https://files.pythonhosted.org/packages/22/ed/49707938b6dd0a78a9178dd93227dc89e4c11af47f5c798d70366e8d0483/numpy-2.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:5a4c988b38d261deeeaad9954e3deb091ad905c94e8bb6708654ef1d97f286b0", size = 10627739, upload-time = "2026-07-04T17:07:32.568Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c7/bb4b882cfe7f299cbc8b66e42e7dd78cf9d14e40f9469fc5e3db7e15b3bd/numpy-2.5.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a33276be12fa045805f477f22482088b66bb758ffbe89a9d21457de863a32e22", size = 11894709, upload-time = "2026-07-04T17:07:34.941Z" }, + { url = "https://files.pythonhosted.org/packages/40/3f/5af7f4a7f6224aef48017aa82bb6174c7a659d724be0c75017b7e64a55b4/numpy-2.5.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:f089d7b00756190aacf1f5d34bdf38c3c430ac82b4f868f8cede73380460fce7", size = 5453810, upload-time = "2026-07-04T17:07:37.495Z" }, + { url = "https://files.pythonhosted.org/packages/20/c9/3474309bc94d634d3f9c3eddf03250ecb8c22cd948ef16fef69a77cc5d7b/numpy-2.5.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:09e9bfd8d2cf479c7d174804fb3811c53a8e9f20a37444008606b57d6b7a826d", size = 6761189, upload-time = "2026-07-04T17:07:39.563Z" }, + { url = "https://files.pythonhosted.org/packages/90/8a/558ae39fdd55d7e7f7fef9a84a6e964ac6b23edbd2a07e52bb084500507d/numpy-2.5.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e68d8dd1e7eba712948f2053a29ec86917bc70ba1358df869d9f06649ef9cf09", size = 15225039, upload-time = "2026-07-04T17:07:41.682Z" }, + { url = "https://files.pythonhosted.org/packages/63/27/ca7392b2d030277bdf0273e7d23255b3ee57d57a7c170a6f4fb3981e1e5d/numpy-2.5.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:99d5095fa265a0c4152e7bb12759e14381ef5496152f1ce58f44bdf55c44beb4", size = 16701306, upload-time = "2026-07-04T17:07:44.611Z" }, + { url = "https://files.pythonhosted.org/packages/02/42/03d53ae7996c44d4374a8262e9dc41671fd56cbb98f7d47ef85cf5da4c6b/numpy-2.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ab87a91b3cc3382b8956095bd8f95e00cf679bb81554339be1a2ba404a1473c1", size = 16589955, upload-time = "2026-07-04T17:07:47.694Z" }, + { url = "https://files.pythonhosted.org/packages/7b/15/6c1784ae469640e65db111e9a34b3d0f14d91e8a38b9ce34810ced370dbb/numpy-2.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:224ca51130ef7da85bea2191625181cb4f337f9cb64b471f10c1a12aa8b60077", size = 18464252, upload-time = "2026-07-04T17:07:50.684Z" }, + { url = "https://files.pythonhosted.org/packages/94/a8/f98e50356cf167df656c526c2dfeec2d7dde182f2a3da4b458a5938e2776/numpy-2.5.1-cp314-cp314t-win32.whl", hash = "sha256:6eab239876581b2b3c5a242281b6007bbdbcd1c7085d7709bb57c5929b11e6bf", size = 6263298, upload-time = "2026-07-04T17:07:53.445Z" }, + { url = "https://files.pythonhosted.org/packages/72/ac/96ae880cdecad0b3275d9359fcec72667b49a4863c9f12942e43679dda02/numpy-2.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:83ce9c80d5b521b0d77ddcbe5447c218d247929b6cc056ca5351342accfff0af", size = 12748623, upload-time = "2026-07-04T17:07:55.384Z" }, + { url = "https://files.pythonhosted.org/packages/a1/5a/4d2b1601df3602dba7a14f3348ba9bfe94a18adb428e693df6154c293831/numpy-2.5.1-cp314-cp314t-win_arm64.whl", hash = "sha256:5a6db61f9aaa57e369905c67d852045d3c4f7126405b29d09b19dec118e9c9cb", size = 10697674, upload-time = "2026-07-04T17:07:58.506Z" }, +] + +[[package]] +name = "nvidia-cublas" +version = "13.1.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cuda-nvrtc" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/a1/0bd24ee8c8d03adac032fd2909426a00c88f8c57961b1277ded97f91119f/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b7a210458267ac818974c53038fbec2e969d5c99f305ab15c72522fa9f001dd5", size = 542848918, upload-time = "2026-04-08T18:46:22.985Z" }, + { url = "https://files.pythonhosted.org/packages/3b/cd/154ca20c38269e05eff77c1464e6c1da89f50a6390b565e9d82e06bc11e1/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:37936a16db8fe4ac1f065c2139360608a543a09275cb1a1af612e08cfa065436", size = 423138758, upload-time = "2026-04-08T18:46:58.655Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti" +version = "13.0.85" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/2a/80353b103fc20ce05ef51e928daed4b6015db4aaa9162ed0997090fe2250/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:796bd679890ee55fb14a94629b698b6db54bcfd833d391d5e94017dd9d7d3151", size = 10310827, upload-time = "2025-09-04T08:26:42.012Z" }, + { url = "https://files.pythonhosted.org/packages/33/6d/737d164b4837a9bbd202f5ae3078975f0525a55730fe871d8ed4e3b952b0/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:4eb01c08e859bf924d222250d2e8f8b8ff6d3db4721288cf35d14252a4d933c8", size = 10715597, upload-time = "2025-09-04T08:26:51.312Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc" +version = "13.0.88" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/68/483a78f5e8f31b08fb1bb671559968c0ca3a065ac7acabfc7cee55214fd6/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:ad9b6d2ead2435f11cbb6868809d2adeeee302e9bb94bcf0539c7a40d80e8575", size = 90215200, upload-time = "2025-09-04T08:28:44.204Z" }, + { url = "https://files.pythonhosted.org/packages/b7/dc/6bb80850e0b7edd6588d560758f17e0550893a1feaf436807d64d2da040f/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d27f20a0ca67a4bb34268a5e951033496c5b74870b868bacd046b1b8e0c3267b", size = 43015449, upload-time = "2025-09-04T08:28:20.239Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime" +version = "13.0.96" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/4f/17d7b9b8e285199c58ce28e31b5c5bbaa4d8271af06a89b6405258245de2/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef9bcbe90493a2b9d810e43d249adb3d02e98dd30200d86607d8d02687c43f55", size = 2261060, upload-time = "2025-10-09T08:55:15.78Z" }, + { url = "https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f82250d7782aa23b6cfe765ecc7db554bd3c2870c43f3d1821f1d18aebf0548", size = 2243632, upload-time = "2025-10-09T08:55:36.117Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu13" +version = "9.20.0.48" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/c5/83384d846b2fd17c44bd499b36c75a45ed4f095fbbb2252294e89cea5c5c/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:e31454ae00094b0c55319d9d15b6fa2fc50a9e1c0f5c8c80fb75258234e731e1", size = 444574296, upload-time = "2026-03-09T19:28:27.751Z" }, + { url = "https://files.pythonhosted.org/packages/6e/5e/edb9c0ae051602c3ccaffe424256463636d639e27d7f302dde9975ef9e7a/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0c45dd8eeb50b603f07995b1b300c62ffe6a1980482b82b3bcf94a4ca9d49304", size = 366173588, upload-time = "2026-03-09T19:29:34.474Z" }, +] + +[[package]] +name = "nvidia-cufft" +version = "12.0.0.61" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c44f692dce8fd5ffd3e3df134b6cdb9c2f72d99cf40b62c32dde45eea9ddad3", size = 214085489, upload-time = "2025-09-04T08:31:56.044Z" }, +] + +[[package]] +name = "nvidia-cufile" +version = "1.15.1.6" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08a3ecefae5a01c7f5117351c64f17c7c62efa5fffdbe24fc7d298da19cd0b44", size = 1223672, upload-time = "2025-09-04T08:32:22.779Z" }, + { url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992, upload-time = "2025-09-04T08:32:14.119Z" }, +] + +[[package]] +name = "nvidia-curand" +version = "10.4.0.35" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/72/7c2ae24fb6b63a32e6ae5d241cc65263ea18d08802aaae087d9f013335a2/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:133df5a7509c3e292aaa2b477afd0194f06ce4ea24d714d616ff36439cee349a", size = 61962106, upload-time = "2025-08-04T10:21:41.128Z" }, + { url = "https://files.pythonhosted.org/packages/a5/9f/be0a41ca4a4917abf5cb9ae0daff1a6060cc5de950aec0396de9f3b52bc5/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc", size = 59544258, upload-time = "2025-08-04T10:22:03.992Z" }, +] + +[[package]] +name = "nvidia-cusolver" +version = "12.0.4.66" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas" }, + { name = "nvidia-cusparse" }, + { name = "nvidia-nvjitlink" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" }, + { url = "https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0a759da5dea5c0ea10fd307de75cdeb59e7ea4fcb8add0924859b944babf1112", size = 200941980, upload-time = "2025-09-04T08:33:22.767Z" }, +] + +[[package]] +name = "nvidia-cusparse" +version = "12.6.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" }, + { url = "https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b3c89c88d01ee0e477cb7f82ef60a11a4bcd57b6b87c33f789350b59759360b", size = 145942937, upload-time = "2025-09-04T08:33:58.029Z" }, +] + +[[package]] +name = "nvidia-cusparselt-cu13" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/e1/cdc1797eadf82d3a9a575a19b33fdc871a97edbec42c00b5b5e914f4aff4/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4dca476c50bf4780d46cd0bfbd82e2bc10a08e4fef7950917ce8d7578d22a23f", size = 221051344, upload-time = "2025-09-05T18:49:51.289Z" }, + { url = "https://files.pythonhosted.org/packages/34/7d/2661f2fb3ac4302f3a246f5fc030213ac60c1fe0bce84f9783dbd831dbb7/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:786ce87568c303fadb5afcc7102d454cd3040d75f6f8626f5db460d1871f4dd0", size = 170148586, upload-time = "2025-09-05T18:50:50.248Z" }, +] + +[[package]] +name = "nvidia-nccl-cu13" +version = "2.29.7" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/0d/daf50d44177ee0cbc7ff0a0c91eb5ff676c82be42f9a970bc7597f440c3a/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:674a12383e3c38a1bcccae7d4f3633b37852230b6047883cb2f4c2d1b36d9bf5", size = 206014712, upload-time = "2026-03-03T05:34:20.843Z" }, + { url = "https://files.pythonhosted.org/packages/67/f4/58e4e91b6919367c7aafb8e36fce9aad1a3047e536bf7e2fd560927d3a4c/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:edd81538446786ec3b73972543e53bb43bcaf0bfc8ef76cb679fcc390ffe136d", size = 205976000, upload-time = "2026-03-03T05:36:24.472Z" }, +] + +[[package]] +name = "nvidia-nvjitlink" +version = "13.3.33" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/ee/580ca6f29dcab0221db8706badca1bbbb084f1975c4d4e83329c3a7e31f0/nvidia_nvjitlink-13.3.33-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:26a6de7fb4c8fdaa7703d3dad720d6d427ddfea5c48a528fd97c11733ad830e5", size = 40742423, upload-time = "2026-05-26T16:54:51.613Z" }, + { url = "https://files.pythonhosted.org/packages/69/30/45414e35ff2eee7db3da037e5707037ccf9d2b5218ffbdb055ea4d5aa98a/nvidia_nvjitlink-13.3.33-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ce48b37dfeb3cb1eae4cf85adacb47d7a6539ea2272870c9a3628ce275c2037e", size = 39168635, upload-time = "2026-05-26T16:54:13.906Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu13" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/0f/05cc9c720236dcd2db9c1ab97fff629e96821be2e63103569da0c9b72f19/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dc2a197f38e5d0376ad52cd1a2a3617d3cdc150fd5966f4aee9bcebb1d68fe9", size = 60215947, upload-time = "2025-09-06T00:32:20.022Z" }, + { url = "https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:290f0a2ee94c9f3687a02502f3b9299a9f9fe826e6d0287ee18482e78d495b80", size = 60412546, upload-time = "2025-09-06T00:32:41.564Z" }, +] + +[[package]] +name = "nvidia-nvtx" +version = "13.0.85" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/f3/d86c845465a2723ad7e1e5c36dcd75ddb82898b3f53be47ebd429fb2fa5d/nvidia_nvtx-13.0.85-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4936d1d6780fbe68db454f5e72a42ff64d1fd6397df9f363ae786930fd5c1cd4", size = 148047, upload-time = "2025-09-04T08:29:01.761Z" }, + { url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878, upload-time = "2025-09-04T08:28:53.627Z" }, +] + +[[package]] +name = "packaging" +version = "26.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/78/9b/560e4be8e26f6fd133a03630a8df0c663b9e8d61b4ade152b72005aec83b/platformdirs-4.11.0.tar.gz", hash = "sha256:0555d18370482847566ffabcaa53ad7c6c1c29f195989ae1ed634a05f76ea1e0", size = 31953, upload-time = "2026-07-21T13:09:36.565Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/68/d8d58938dfb1370b266a1a729e6d77a985be23689a0496498ee17b2cbf90/platformdirs-4.11.0-py3-none-any.whl", hash = "sha256:360ccded2b7fce0af0ff80cc8f5942a1c5d99b0e856033acb030bfc634709e74", size = 23247, upload-time = "2026-07-21T13:09:35.422Z" }, +] + +[[package]] +name = "protobuf" +version = "7.35.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/01/9ef0afd7999eb9badb3a768b4aedd78c86d4c65cfaf1958ab276199e76b4/protobuf-7.35.1.tar.gz", hash = "sha256:ce115a26fe0c39a2c29973d914d327e516a6455464489fe3cd1e51a1b354f81a", size = 458717, upload-time = "2026-06-11T21:55:40.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/03/8aeeb7458d22546bf64b5250ca1daeb5ff757d900e8e4a7476c6f0db843e/protobuf-7.35.1-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:24f857477359a85c0c235261b8ba905fd51b2562f4a64ca1df5473f29850cbf6", size = 433226, upload-time = "2026-06-11T21:55:31.719Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/dfb89eb0e652a1ff073c39a59fb5e3a83cfe9b57a2c83fa6d78270101767/protobuf-7.35.1-cp310-abi3-manylinux2014_aarch64.whl", hash = "sha256:11d6b0ec246892d85215b0a13ca6e0233cf5284b68f0ac02646427f4ff88a799", size = 328847, upload-time = "2026-06-11T21:55:34.035Z" }, + { url = "https://files.pythonhosted.org/packages/0f/58/dc12f2cd484951524af6e3382c785869b9b3fb5e52ee95ae23add53ee8f9/protobuf-7.35.1-cp310-abi3-manylinux2014_s390x.whl", hash = "sha256:b73f9489a4b8b1c9cb1f8ed951c736392592edb24b9d6819f36d2e10b171d5b4", size = 344030, upload-time = "2026-06-11T21:55:34.941Z" }, + { url = "https://files.pythonhosted.org/packages/e4/be/5b3cfe508bfab6761414ff944e3366eb13be4fd71efcd69450f89ba39f43/protobuf-7.35.1-cp310-abi3-manylinux2014_x86_64.whl", hash = "sha256:74758715c53d7158fb76caf4f0cfdacc5329a4b1bb994f865d6cf302d413a1c4", size = 327130, upload-time = "2026-06-11T21:55:35.921Z" }, + { url = "https://files.pythonhosted.org/packages/d8/bc/6d6c7ba8709c85f8f2c390b2b118d6fb08a783676a572271851bf45a7d22/protobuf-7.35.1-cp310-abi3-win32.whl", hash = "sha256:353652e4efd0bca5b5fc2656abf8307ef351f0cf938c9eba09f0e09c20a25c30", size = 428945, upload-time = "2026-06-11T21:55:37.034Z" }, + { url = "https://files.pythonhosted.org/packages/0a/19/8d0cb6f20a1ef7b18f1c8986ad5783f22f84cce39c6ce9a6e645ea55192e/protobuf-7.35.1-cp310-abi3-win_amd64.whl", hash = "sha256:230a75ddfc2de4806e56696ce9640c1cdfdb6543b7cfce98d42a4c0a0e7bdb87", size = 439996, upload-time = "2026-06-11T21:55:38.123Z" }, + { url = "https://files.pythonhosted.org/packages/19/c7/5f7c636ec43e0c545e28d1f1db71990108306f7bdcb89f069ba97e428e7f/protobuf-7.35.1-py3-none-any.whl", hash = "sha256:4bc97768d8fe4ad6743c8a19403e314511ed9f6d13205b687e52421c023ac1b9", size = 171659, upload-time = "2026-06-11T21:55:39.155Z" }, +] + +[[package]] +name = "pufferlib" +version = "4.0.0" +source = { editable = "." } +dependencies = [ + { name = "gpytorch" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "pybind11" }, + { name = "rich" }, + { name = "rich-argparse" }, + { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scikit-learn", version = "1.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "setuptools" }, + { name = "torch" }, + { name = "wandb" }, +] + +[package.metadata] +requires-dist = [ + { name = "gpytorch" }, + { name = "numpy" }, + { name = "pybind11" }, + { name = "rich" }, + { name = "rich-argparse" }, + { name = "scikit-learn" }, + { name = "setuptools" }, + { name = "torch", specifier = ">=2.9" }, + { name = "wandb" }, +] + +[[package]] +name = "pybind11" +version = "3.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/f0/35145a3c3baffeef55d4b8324caa33abaa8fa56ab345ecd4b2211d09163e/pybind11-3.0.4.tar.gz", hash = "sha256:3286b59c8a774b9ee650169302dd5a4eedc30a8617905a0560dd8ee44775130c", size = 589533, upload-time = "2026-04-19T03:08:15.925Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/06/c3a23c9a0263b136c519f033a58d4641e73065fefc7754e9667ec206d992/pybind11-3.0.4-py3-none-any.whl", hash = "sha256:961720ee652da51d531b7b2451a6bd2bc042b0106e6d9baa48ecb7d58034ce63", size = 314166, upload-time = "2026-04-19T03:08:14.091Z" }, +] + +[[package]] +name = "pydantic" +version = "2.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/08/f1ba952f1c8ae5581c70fa9c6da89f247b83e3dd8c09c035d5d7931fc23d/pydantic_core-2.46.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a396dcc17e5a0b164dbe026896245a4fa9ff402edca1dff0be3d53a517f74de4", size = 2113146, upload-time = "2026-05-06T13:37:36.537Z" }, + { url = "https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da4b951fe36dc7c3a1ccb4e3cd1747c3542b8c9ceede8fc86cae054e764485f5", size = 1949769, upload-time = "2026-05-06T13:37:46.365Z" }, + { url = "https://files.pythonhosted.org/packages/64/ba/bfb1d928fd5b49e1258935ff104ae356e9fd89384a55bf9f847e9193ad40/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb63e0198ca18aad131c089b9204c23079c3afa95487e561f4c522d519e55aba", size = 1974958, upload-time = "2026-05-06T13:37:28.611Z" }, + { url = "https://files.pythonhosted.org/packages/4e/74/76223bfb117b64af743c9b6670d1364516f5c0604f96b48f3272f6af6cc6/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f47286a97f0bc9b8859519809077b91b2cefe4ae47fcbf5e466a009c1c5d742b", size = 2042118, upload-time = "2026-05-06T13:36:55.216Z" }, + { url = "https://files.pythonhosted.org/packages/cb/7b/848732968bc8f48f3187542f08358b9d842db564147b256669426ebb1652/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:905a0ed8ea6f2d61c1738835f99b699348d7857379083e5fc497fa0c967a407c", size = 2222876, upload-time = "2026-05-06T13:38:25.455Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2f/e90b63ee2e14bd8d3db8f705a6d75d64e6ee1b7c2c8833747ce706e1e0ce/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea793e075b70290d89d8142074262885d3f7da19634845135751bd6344f73b50", size = 2286703, upload-time = "2026-05-06T13:37:53.304Z" }, + { url = "https://files.pythonhosted.org/packages/ba/1e/acc4d70f88a0a277e4a1fa77ebb985ceabaf900430f875bf9338e11c9420/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395aebd9183f9d112f569aeb5b2214d1a10a33bec8456447f7fbdfa51d38d4cd", size = 2092042, upload-time = "2026-05-06T13:38:46.981Z" }, + { url = "https://files.pythonhosted.org/packages/a9/da/0a422b57bf8504102bf3c4ccea9c41bab5a5cee6a54650acf8faf67f5a24/pydantic_core-2.46.4-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b078afbc25f3a1436c7a1d2cd3e322497ee99615ba97c563566fdf46aff1ee01", size = 2117231, upload-time = "2026-05-06T13:39:23.146Z" }, + { url = "https://files.pythonhosted.org/packages/bd/2a/2ac13c3af305843e23c5078c53d135656b3f05a2fd78cb7bbbb12e97b473/pydantic_core-2.46.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f747929cf940cddb5b3668a390056ddd5ba2e5010615ea2dcf4f9c4f3ab8791d", size = 2168388, upload-time = "2026-05-06T13:40:08.06Z" }, + { url = "https://files.pythonhosted.org/packages/72/04/2beacf7e1607e93eefe4aed1b4709f079b905fb77530179d4f7c71745f22/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:daa27d92c36f24388fe3ad306b174781c747627f134452e4f128ea00ce1fe8c4", size = 2184769, upload-time = "2026-05-06T13:38:13.901Z" }, + { url = "https://files.pythonhosted.org/packages/9e/29/d2b9fd9f539133548eaf622c06a4ce176cb46ac59f32d0359c4abc0de047/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:19e51f073cd3df251856a8a4189fbdf1de4012c3ebacfb1884f94f1eb406079f", size = 2319312, upload-time = "2026-05-06T13:39:08.24Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/0f7a5b85fec6075bea96e3ef9187de38fccced0de92c1e7feda8d5cc7bb9/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1747f85cee84c26985853c6f3d9bd3e75da5212912443fa111c113b9c246f39", size = 2361817, upload-time = "2026-05-06T13:38:43.2Z" }, + { url = "https://files.pythonhosted.org/packages/25/a4/73363fec545fd3ec025490bdda2743c56d0dd5b6266b1a53bbe9e4265375/pydantic_core-2.46.4-cp310-cp310-win32.whl", hash = "sha256:2f84c03c8607173d16b5a854ec68a2f9079ae03237a54fb506d13af47e1d018d", size = 1987085, upload-time = "2026-05-06T13:39:25.497Z" }, + { url = "https://files.pythonhosted.org/packages/01/aa/62f082da2c91fac1c234bc9ee0066257ce83f0604abd72e4c9d5991f2d84/pydantic_core-2.46.4-cp310-cp310-win_amd64.whl", hash = "sha256:8358a950c8909158e3df31538a7e4edc2d7265a7c54b47f0864d9e5bae9dcebf", size = 2074311, upload-time = "2026-05-06T13:39:59.922Z" }, + { url = "https://files.pythonhosted.org/packages/5c/fa/6d7708d2cfc1a832acb6aeb0cd16e801902df8a0f583bb3b4b527fde022e/pydantic_core-2.46.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0e96592440881c74a213e5ad528e2b24d3d4f940de2766bed9010ab1d9e51594", size = 2111872, upload-time = "2026-05-06T13:40:27.596Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6f/aa064a3e74b5745afbdf250594f38e7ead05e2d651bcb35994b9417a0d4d/pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0d65b8c354be7fb5f720c3caa8bc940bc2d20ce749c8e06135f07f8ed95dd7c", size = 1948255, upload-time = "2026-05-06T13:39:12.574Z" }, + { url = "https://files.pythonhosted.org/packages/43/3a/41114a9f7569b84b4d84e7a018c57c56347dac30c0d4a872946ec4e36c46/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bfb192b3f4b9e8a89b6277b6ce787564f62cfd272055f6e685726b111dc7826", size = 1972827, upload-time = "2026-05-06T13:38:19.841Z" }, + { url = "https://files.pythonhosted.org/packages/ef/25/1ab42e8048fe551934d9884e8d64daa7e990ad386f310a15981aeb6a5b08/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9037063db01f09b09e237c282b6792bd4da634b5402c4e7f0c61effed7701a04", size = 2041051, upload-time = "2026-05-06T13:38:10.447Z" }, + { url = "https://files.pythonhosted.org/packages/94/c2/1a934597ddf08da410385b3b7aae91956a5a76c635effef456074fad7e88/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc010ab034c8c7452522748bf937df58020d256ccae0874463d1f4d01758af8e", size = 2221314, upload-time = "2026-05-06T13:40:13.089Z" }, + { url = "https://files.pythonhosted.org/packages/02/6d/9e8ad178c9c4df27ad3c8f25d1fe2a7ab0d2ba0559fad4aee5d3d1f16771/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5dac79fa1614d1e06ca695109c6105923bd9c7d1d6c918d4e637b7e6b32fd3", size = 2285146, upload-time = "2026-05-06T13:38:59.224Z" }, + { url = "https://files.pythonhosted.org/packages/80/50/540cd3aeefc041beb111125c4bff779831a2111fc6b15a9138cda277d32c/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fa868638bf362d3d138ea55829cefb3d5f4b0d7f142234382a15e2485dbec4", size = 2089685, upload-time = "2026-05-06T13:38:17.762Z" }, + { url = "https://files.pythonhosted.org/packages/6b/a4/b440ad35f05f6a38f89fa0f149accb3f0e02be94ca5e15f3c449a61b4bc9/pydantic_core-2.46.4-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:17299feefe090f2caa5b8e37222bb5f663e4935a8bfa6931d4102e5df1a9f398", size = 2115420, upload-time = "2026-05-06T13:37:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/99/61/de4f55db8dfd57bfdfa9a12ec90fe1b57c4f41062f7ca86f08586b3e0ac0/pydantic_core-2.46.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4c63ebc82684aa89d9a3bcbd13d515b3be44250dc68dd3bd81526c1cb31286c3", size = 2165122, upload-time = "2026-05-06T13:37:01.167Z" }, + { url = "https://files.pythonhosted.org/packages/f7/52/7c529d7bdb2d1068bd52f51fe32572c8301f9a4febf1948f10639f1436f5/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aaa2a54443eff1950ba5ddc6b6ccda0d9c84a364276a62f969bdf2a390650848", size = 2182573, upload-time = "2026-05-06T13:38:45.04Z" }, + { url = "https://files.pythonhosted.org/packages/37/b3/7c40325848ba78247f2812dcf9c7274e38cd801820ca6dd9fe63bcfb0eb4/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:18e5ceec2ab67e6d5f1a9085e5a24c9c4e2ac4545730bfe668680bca05e555f3", size = 2317139, upload-time = "2026-05-06T13:37:15.539Z" }, + { url = "https://files.pythonhosted.org/packages/d9/37/f913f81a657c865b75da6c0dbed79876073c2a43b5bd9edbe8da785e4d49/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a0f62d0a58f4e7da165457e995725421e0064f2255d8eccebc49f41bbc23b109", size = 2360433, upload-time = "2026-05-06T13:37:30.099Z" }, + { url = "https://files.pythonhosted.org/packages/c4/67/6acaa1be2567f9256b056d8477158cac7240813956ce86e49deae8e173b4/pydantic_core-2.46.4-cp311-cp311-win32.whl", hash = "sha256:041bde0a48fd37cf71cab1c9d56d3e8625a3793fef1f7dd232b3ff37e978ecda", size = 1985513, upload-time = "2026-05-06T13:38:15.669Z" }, + { url = "https://files.pythonhosted.org/packages/aa/e6/c505f83dfeda9a2e5c995cfd872949e4d05e12f7feb3dca72f633daefa94/pydantic_core-2.46.4-cp311-cp311-win_amd64.whl", hash = "sha256:6f2eeda33a839975441c86a4119e1383c50b47faf0cbb5176985565c6bb02c33", size = 2071114, upload-time = "2026-05-06T13:40:35.416Z" }, + { url = "https://files.pythonhosted.org/packages/0f/da/7a263a96d965d9d0df5e8de8a475f33495451117035b09acb110288c381f/pydantic_core-2.46.4-cp311-cp311-win_arm64.whl", hash = "sha256:14f4c5d6db102bd796a627bbb3a17b4cf4574b9ae861d8b7c9a9661c6dd3362d", size = 2044298, upload-time = "2026-05-06T13:38:29.754Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" }, + { url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" }, + { url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" }, + { url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" }, + { url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" }, + { url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" }, + { url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" }, + { url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" }, + { url = "https://files.pythonhosted.org/packages/51/a2/5d30b469c5267a17b39dec53208222f76a8d351dfac4af661888c5aee77d/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008", size = 2106306, upload-time = "2026-05-06T13:37:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4", size = 1951906, upload-time = "2026-05-06T13:37:17.012Z" }, + { url = "https://files.pythonhosted.org/packages/03/d5/fd02da45b659668b05923b17ba3a0100a0a3d5541e3bd8fcc4ecb711309e/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76", size = 1976802, upload-time = "2026-05-06T13:37:35.113Z" }, + { url = "https://files.pythonhosted.org/packages/21/f2/95727e1368be3d3ed485eaab7adbd7dda408f33f7a36e8b48e0144002b91/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3", size = 2052446, upload-time = "2026-05-06T13:37:12.313Z" }, + { url = "https://files.pythonhosted.org/packages/9c/86/5d99feea3f77c7234b8718075b23db11532773c1a0dbd9b9490215dc2eeb/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76", size = 2232757, upload-time = "2026-05-06T13:39:01.149Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3a/508ac615935ef7588cf6d9e9b91309fdc2da751af865e02a9098de88258c/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4", size = 2309275, upload-time = "2026-05-06T13:37:41.406Z" }, + { url = "https://files.pythonhosted.org/packages/07/f8/41db9de19d7987d6b04715a02b3b40aea467000275d9d758ffaa31af7d50/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a", size = 2094467, upload-time = "2026-05-06T13:39:18.847Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e2/f35033184cb11d0052daf4416e8e10a502ea2ac006fc4f459aee872727d1/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262", size = 2134417, upload-time = "2026-05-06T13:40:17.944Z" }, + { url = "https://files.pythonhosted.org/packages/7e/7b/6ceeb1cc90e193862f444ebe373d8fdf613f0a82572dde03fb10734c6c71/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e", size = 2179782, upload-time = "2026-05-06T13:40:32.618Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f2/c8d7773ede6af08036423a00ae0ceffce266c3c52a096c435d68c896083f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd", size = 2188782, upload-time = "2026-05-06T13:36:51.018Z" }, + { url = "https://files.pythonhosted.org/packages/59/31/0c864784e31f09f05cdd87606f08923b9c9e7f6e51dd27f20f62f975ce9f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be", size = 2328334, upload-time = "2026-05-06T13:40:37.764Z" }, + { url = "https://files.pythonhosted.org/packages/c2/eb/4f6c8a41efa30baa755590f4141abf3a8c370fab610915733e74134a7270/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d", size = 2372986, upload-time = "2026-05-06T13:39:34.152Z" }, + { url = "https://files.pythonhosted.org/packages/5b/24/b375a480d53113860c299764bfe9f349a3dc9108b3adc0d7f0d786492ebf/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb", size = 1973693, upload-time = "2026-05-06T13:37:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e8/cff247591966f2d22ec8c003cd7587e27b7ba7b81ab2fb888e3ab75dc285/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292", size = 2071819, upload-time = "2026-05-06T13:38:49.139Z" }, + { url = "https://files.pythonhosted.org/packages/c6/1a/f4aee670d5670e9e148e0c82c7db98d780be566c6e6a97ee8035528ca0b3/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d", size = 2027411, upload-time = "2026-05-06T13:40:45.796Z" }, + { url = "https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb", size = 2102079, upload-time = "2026-05-06T13:38:41.019Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462", size = 1952179, upload-time = "2026-05-06T13:36:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9", size = 1978926, upload-time = "2026-05-06T13:37:39.933Z" }, + { url = "https://files.pythonhosted.org/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4", size = 2046785, upload-time = "2026-05-06T13:38:01.995Z" }, + { url = "https://files.pythonhosted.org/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914", size = 2228733, upload-time = "2026-05-06T13:40:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28", size = 2307534, upload-time = "2026-05-06T13:37:21.531Z" }, + { url = "https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b", size = 2099732, upload-time = "2026-05-06T13:39:31.942Z" }, + { url = "https://files.pythonhosted.org/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c", size = 2129627, upload-time = "2026-05-06T13:37:25.033Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb", size = 2179141, upload-time = "2026-05-06T13:37:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898", size = 2184325, upload-time = "2026-05-06T13:36:53.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e", size = 2323990, upload-time = "2026-05-06T13:40:29.971Z" }, + { url = "https://files.pythonhosted.org/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519", size = 2369978, upload-time = "2026-05-06T13:37:23.027Z" }, + { url = "https://files.pythonhosted.org/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4", size = 1966354, upload-time = "2026-05-06T13:38:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac", size = 2072238, upload-time = "2026-05-06T13:39:40.807Z" }, + { url = "https://files.pythonhosted.org/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a", size = 2018251, upload-time = "2026-05-06T13:37:26.72Z" }, + { url = "https://files.pythonhosted.org/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0", size = 2099593, upload-time = "2026-05-06T13:39:47.682Z" }, + { url = "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d", size = 1935226, upload-time = "2026-05-06T13:40:40.428Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b", size = 1974605, upload-time = "2026-05-06T13:37:32.029Z" }, + { url = "https://files.pythonhosted.org/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000", size = 2030777, upload-time = "2026-05-06T13:38:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e", size = 2236641, upload-time = "2026-05-06T13:37:08.096Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd", size = 2286404, upload-time = "2026-05-06T13:40:20.221Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3", size = 2109219, upload-time = "2026-05-06T13:38:12.153Z" }, + { url = "https://files.pythonhosted.org/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7", size = 2110594, upload-time = "2026-05-06T13:40:02.971Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff", size = 2159542, upload-time = "2026-05-06T13:39:27.506Z" }, + { url = "https://files.pythonhosted.org/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424", size = 2168146, upload-time = "2026-05-06T13:38:31.93Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6", size = 2306309, upload-time = "2026-05-06T13:37:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565", size = 2369736, upload-time = "2026-05-06T13:37:05.645Z" }, + { url = "https://files.pythonhosted.org/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02", size = 1955575, upload-time = "2026-05-06T13:38:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5", size = 2051624, upload-time = "2026-05-06T13:38:21.672Z" }, + { url = "https://files.pythonhosted.org/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596", size = 2017325, upload-time = "2026-05-06T13:40:52.723Z" }, + { url = "https://files.pythonhosted.org/packages/ee/a4/73995fd4ebbb46ba0ee51e6fa049b8f02c40daebb762208feda8a6b7894d/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:14d4edf427bdcf950a8a02d7cb44a08614388dd6e1bdcbf4f67504fa7887da9c", size = 2111589, upload-time = "2026-05-06T13:37:10.817Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7f/f37d3a5e8bfcc2e403f5c57a730f2d815693fb42119e8ea48b3789335af1/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:0ce40cd7b21210e99342afafbd4d0f76d784eb5b1d60f3bdc566be4983c6c73b", size = 1944552, upload-time = "2026-05-06T13:36:56.717Z" }, + { url = "https://files.pythonhosted.org/packages/15/3c/d7eb777b3ff43e8433a4efb39a17aa8fd98a4ee8561a24a67ef5db07b2d6/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90884113d8b48f760e9587002789ddd741e76ab9f89518cd1e43b1f1a52ec44b", size = 1982984, upload-time = "2026-05-06T13:39:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/63/87/70b9f40170a81afd55ca26c9b2acb25c20d64bcfbf888fafecb3ba077d4c/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66ce7632c22d837c95301830e111ad0128a32b8207533b60896a96c4915192ea", size = 2138417, upload-time = "2026-05-06T13:39:45.476Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" }, + { url = "https://files.pythonhosted.org/packages/11/cb/428de0385b6c8d44b716feba566abfacfbd23ee3c4439faa789a1456242f/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0c563b08bca408dc7f65f700633d8442fffb2421fc47b8101377e9fd65051ff0", size = 2112782, upload-time = "2026-05-06T13:37:04.016Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b5/6a17bdadd0fc1f170adfd05a20d37c832f52b117b4d9131da1f41bb097ce/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:db06ffe51636ffe9ca531fe9023dd64bdd794be8754cb5df57c5498ae5b518a7", size = 1952146, upload-time = "2026-05-06T13:39:43.092Z" }, + { url = "https://files.pythonhosted.org/packages/2a/dc/03734d80e362cd43ef65428e9de77c730ce7f2f11c60d2b1e1b39f0fbf99/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:133878133d271ade3d41d1bfb2a45ec38dbdbda40bc065921c6b04e4630127e2", size = 2134492, upload-time = "2026-05-06T13:36:58.124Z" }, + { url = "https://files.pythonhosted.org/packages/de/df/5e5ffc085ed07cc22d298134d3d911c63e91f6a0eb91fe646750a3209910/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bc519fbf2b7578398853d815009ae5e4d4603d12f4e3f91da8c06852d3da3e9", size = 2156604, upload-time = "2026-05-06T13:37:49.88Z" }, + { url = "https://files.pythonhosted.org/packages/81/44/6e112a4253e56f5705467cbab7ab5e91ee7398ba3d56d358635958893d3e/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c7a7bd4e39e8e4c12c39cd480356842b6a8a06e41b23a55a5e3e191718838ddf", size = 2183828, upload-time = "2026-05-06T13:37:43.053Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ad/5565071e937d8e752842ac241463944c9eb14c87e2d269f2658a5bd05e98/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:d396ec2b979760aaf3218e76c24e65bd0aca24983298653b3a9d7a45f9e47b30", size = 2310000, upload-time = "2026-05-06T13:37:56.694Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c3/66883a5cec183e7fba4d024b4cbbe61851a63750ef606b0afecc46d1f2bf/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:86e1a4418c6cd97d60c95c71164158eaf7324fae7b0923264016baa993eba6fc", size = 2361286, upload-time = "2026-05-06T13:40:05.667Z" }, + { url = "https://files.pythonhosted.org/packages/4b/2d/69abac8f838090bbecd5df894befb2c2619e7996a98ddb949db9f3b93225/pydantic_core-2.46.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d51026d73fcfd93610abc7b27789c26b313920fcfb20e27462d74a7f8b06e983", size = 2193071, upload-time = "2026-05-06T13:38:08.682Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, + { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "rich" +version = "15.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" }, +] + +[[package]] +name = "rich-argparse" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "rich" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6a/e5/1064c43203a357d668cd42435f7a15fe6af51512d85b2104fecb937aa861/rich_argparse-1.8.0.tar.gz", hash = "sha256:679df3d832fa94ad6e4bdb07ded088cd7ea2dddc58ae9b2b46346a40b06cbc0c", size = 38940, upload-time = "2026-05-01T15:18:43.604Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl", hash = "sha256:d2a3ce7854654e2253c578763ab0a32f05016f23a55fadba7b9a91b6c0e92142", size = 25616, upload-time = "2026-05-01T15:18:42.395Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "joblib", marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "threadpoolctl", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload-time = "2025-09-09T08:21:29.075Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/3e/daed796fd69cce768b8788401cc464ea90b306fb196ae1ffed0b98182859/scikit_learn-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b33579c10a3081d076ab403df4a4190da4f4432d443521674637677dc91e61f", size = 9336221, upload-time = "2025-09-09T08:20:19.328Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ce/af9d99533b24c55ff4e18d9b7b4d9919bbc6cd8f22fe7a7be01519a347d5/scikit_learn-1.7.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:36749fb62b3d961b1ce4fedf08fa57a1986cd409eff2d783bca5d4b9b5fce51c", size = 8653834, upload-time = "2025-09-09T08:20:22.073Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/8c2a03d518fb6bd0b6b0d4b114c63d5f1db01ff0f9925d8eb10960d01c01/scikit_learn-1.7.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7a58814265dfc52b3295b1900cfb5701589d30a8bb026c7540f1e9d3499d5ec8", size = 9660938, upload-time = "2025-09-09T08:20:24.327Z" }, + { url = "https://files.pythonhosted.org/packages/2b/75/4311605069b5d220e7cf5adabb38535bd96f0079313cdbb04b291479b22a/scikit_learn-1.7.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a847fea807e278f821a0406ca01e387f97653e284ecbd9750e3ee7c90347f18", size = 9477818, upload-time = "2025-09-09T08:20:26.845Z" }, + { url = "https://files.pythonhosted.org/packages/7f/9b/87961813c34adbca21a6b3f6b2bea344c43b30217a6d24cc437c6147f3e8/scikit_learn-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:ca250e6836d10e6f402436d6463d6c0e4d8e0234cfb6a9a47835bd392b852ce5", size = 8886969, upload-time = "2025-09-09T08:20:29.329Z" }, + { url = "https://files.pythonhosted.org/packages/43/83/564e141eef908a5863a54da8ca342a137f45a0bfb71d1d79704c9894c9d1/scikit_learn-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7509693451651cd7361d30ce4e86a1347493554f172b1c72a39300fa2aea79e", size = 9331967, upload-time = "2025-09-09T08:20:32.421Z" }, + { url = "https://files.pythonhosted.org/packages/18/d6/ba863a4171ac9d7314c4d3fc251f015704a2caeee41ced89f321c049ed83/scikit_learn-1.7.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:0486c8f827c2e7b64837c731c8feff72c0bd2b998067a8a9cbc10643c31f0fe1", size = 8648645, upload-time = "2025-09-09T08:20:34.436Z" }, + { url = "https://files.pythonhosted.org/packages/ef/0e/97dbca66347b8cf0ea8b529e6bb9367e337ba2e8be0ef5c1a545232abfde/scikit_learn-1.7.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89877e19a80c7b11a2891a27c21c4894fb18e2c2e077815bcade10d34287b20d", size = 9715424, upload-time = "2025-09-09T08:20:36.776Z" }, + { url = "https://files.pythonhosted.org/packages/f7/32/1f3b22e3207e1d2c883a7e09abb956362e7d1bd2f14458c7de258a26ac15/scikit_learn-1.7.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8da8bf89d4d79aaec192d2bda62f9b56ae4e5b4ef93b6a56b5de4977e375c1f1", size = 9509234, upload-time = "2025-09-09T08:20:38.957Z" }, + { url = "https://files.pythonhosted.org/packages/9f/71/34ddbd21f1da67c7a768146968b4d0220ee6831e4bcbad3e03dd3eae88b6/scikit_learn-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:9b7ed8d58725030568523e937c43e56bc01cadb478fc43c042a9aca1dacb3ba1", size = 8894244, upload-time = "2025-09-09T08:20:41.166Z" }, + { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818, upload-time = "2025-09-09T08:20:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997, upload-time = "2025-09-09T08:20:45.468Z" }, + { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381, upload-time = "2025-09-09T08:20:47.982Z" }, + { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296, upload-time = "2025-09-09T08:20:50.366Z" }, + { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256, upload-time = "2025-09-09T08:20:52.627Z" }, + { url = "https://files.pythonhosted.org/packages/ae/93/a3038cb0293037fd335f77f31fe053b89c72f17b1c8908c576c29d953e84/scikit_learn-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7", size = 9212382, upload-time = "2025-09-09T08:20:54.731Z" }, + { url = "https://files.pythonhosted.org/packages/40/dd/9a88879b0c1104259136146e4742026b52df8540c39fec21a6383f8292c7/scikit_learn-1.7.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:abebbd61ad9e1deed54cca45caea8ad5f79e1b93173dece40bb8e0c658dbe6fe", size = 8592042, upload-time = "2025-09-09T08:20:57.313Z" }, + { url = "https://files.pythonhosted.org/packages/46/af/c5e286471b7d10871b811b72ae794ac5fe2989c0a2df07f0ec723030f5f5/scikit_learn-1.7.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502c18e39849c0ea1a5d681af1dbcf15f6cce601aebb657aabbfe84133c1907f", size = 9434180, upload-time = "2025-09-09T08:20:59.671Z" }, + { url = "https://files.pythonhosted.org/packages/f1/fd/df59faa53312d585023b2da27e866524ffb8faf87a68516c23896c718320/scikit_learn-1.7.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a4c328a71785382fe3fe676a9ecf2c86189249beff90bf85e22bdb7efaf9ae0", size = 9283660, upload-time = "2025-09-09T08:21:01.71Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c7/03000262759d7b6f38c836ff9d512f438a70d8a8ddae68ee80de72dcfb63/scikit_learn-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:63a9afd6f7b229aad94618c01c252ce9e6fa97918c5ca19c9a17a087d819440c", size = 8702057, upload-time = "2025-09-09T08:21:04.234Z" }, + { url = "https://files.pythonhosted.org/packages/55/87/ef5eb1f267084532c8e4aef98a28b6ffe7425acbfd64b5e2f2e066bc29b3/scikit_learn-1.7.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9acb6c5e867447b4e1390930e3944a005e2cb115922e693c08a323421a6966e8", size = 9558731, upload-time = "2025-09-09T08:21:06.381Z" }, + { url = "https://files.pythonhosted.org/packages/93/f8/6c1e3fc14b10118068d7938878a9f3f4e6d7b74a8ddb1e5bed65159ccda8/scikit_learn-1.7.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:2a41e2a0ef45063e654152ec9d8bcfc39f7afce35b08902bfe290c2498a67a6a", size = 9038852, upload-time = "2025-09-09T08:21:08.628Z" }, + { url = "https://files.pythonhosted.org/packages/83/87/066cafc896ee540c34becf95d30375fe5cbe93c3b75a0ee9aa852cd60021/scikit_learn-1.7.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98335fb98509b73385b3ab2bd0639b1f610541d3988ee675c670371d6a87aa7c", size = 9527094, upload-time = "2025-09-09T08:21:11.486Z" }, + { url = "https://files.pythonhosted.org/packages/9c/2b/4903e1ccafa1f6453b1ab78413938c8800633988c838aa0be386cbb33072/scikit_learn-1.7.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191e5550980d45449126e23ed1d5e9e24b2c68329ee1f691a3987476e115e09c", size = 9367436, upload-time = "2025-09-09T08:21:13.602Z" }, + { url = "https://files.pythonhosted.org/packages/b5/aa/8444be3cfb10451617ff9d177b3c190288f4563e6c50ff02728be67ad094/scikit_learn-1.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:57dc4deb1d3762c75d685507fbd0bc17160144b2f2ba4ccea5dc285ab0d0e973", size = 9275749, upload-time = "2025-09-09T08:21:15.96Z" }, + { url = "https://files.pythonhosted.org/packages/d9/82/dee5acf66837852e8e68df6d8d3a6cb22d3df997b733b032f513d95205b7/scikit_learn-1.7.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fa8f63940e29c82d1e67a45d5297bdebbcb585f5a5a50c4914cc2e852ab77f33", size = 9208906, upload-time = "2025-09-09T08:21:18.557Z" }, + { url = "https://files.pythonhosted.org/packages/3c/30/9029e54e17b87cb7d50d51a5926429c683d5b4c1732f0507a6c3bed9bf65/scikit_learn-1.7.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:f95dc55b7902b91331fa4e5845dd5bde0580c9cd9612b1b2791b7e80c3d32615", size = 8627836, upload-time = "2025-09-09T08:21:20.695Z" }, + { url = "https://files.pythonhosted.org/packages/60/18/4a52c635c71b536879f4b971c2cedf32c35ee78f48367885ed8025d1f7ee/scikit_learn-1.7.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9656e4a53e54578ad10a434dc1f993330568cfee176dff07112b8785fb413106", size = 9426236, upload-time = "2025-09-09T08:21:22.645Z" }, + { url = "https://files.pythonhosted.org/packages/99/7e/290362f6ab582128c53445458a5befd471ed1ea37953d5bcf80604619250/scikit_learn-1.7.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96dc05a854add0e50d3f47a1ef21a10a595016da5b007c7d9cd9d0bffd1fcc61", size = 9312593, upload-time = "2025-09-09T08:21:24.65Z" }, + { url = "https://files.pythonhosted.org/packages/8e/87/24f541b6d62b1794939ae6422f8023703bbf6900378b2b34e0b4384dfefd/scikit_learn-1.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:bb24510ed3f9f61476181e4db51ce801e2ba37541def12dc9333b946fc7a9cf8", size = 8820007, upload-time = "2025-09-09T08:21:26.713Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "joblib", marker = "python_full_version >= '3.11'" }, + { name = "narwhals", marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "threadpoolctl", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fa/6f/37092bdb25f712817231799fc5674d8e704066a8a70c1d2d40517e18b4ab/scikit_learn-1.9.0.tar.gz", hash = "sha256:8833266989d3a5110178a9fae30783675460724d0e1efb13b14901d2c660c557", size = 7750767, upload-time = "2026-06-02T11:54:32.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/be/e844fd9586e66540a15b71924d17a6cbc1bb749e81ddd0a796bcdba4c055/scikit_learn-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9db6f4d34e68c8899e4cab27fdf8eafe6ed21f2ba52ceb25ea250cd237f8e47b", size = 8789686, upload-time = "2026-06-02T11:53:05.439Z" }, + { url = "https://files.pythonhosted.org/packages/42/e2/ff880f62677a17d035817d543cb0fc8727d01eccbee81c5f7fc733a9d856/scikit_learn-1.9.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f401448645a3e7bc115aa3c094097865155b34bff1cba8101857d9104e99074c", size = 8256782, upload-time = "2026-06-02T11:53:08.904Z" }, + { url = "https://files.pythonhosted.org/packages/25/64/eb40435e1a508ab1b4e284ce43ae80f6a162e5be5e38ed5a6fab467a9ea4/scikit_learn-1.9.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fd3a8ef0c758555a3b23c03adaa858af32f7736785ded50ad5991f59c4ed03fa", size = 8992419, upload-time = "2026-06-02T11:53:11.551Z" }, + { url = "https://files.pythonhosted.org/packages/8d/da/4810a28e473185429e45a57eebcc91fc991b33d889cc0676063e671db03d/scikit_learn-1.9.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7e254636164090da847715a27f8e5478feb98c40a9e0ee90cbd277de9e5ceb8", size = 9281411, upload-time = "2026-06-02T11:53:15.063Z" }, + { url = "https://files.pythonhosted.org/packages/3b/67/be3d369f40d8178ba3bd86635d132e08cb5329b023e4669d9426d84bc007/scikit_learn-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:5dc1818c77575d149e25fce9ef82dd7b7263ae372f03494158668ad632a69759", size = 8272736, upload-time = "2026-06-02T11:53:18.108Z" }, + { url = "https://files.pythonhosted.org/packages/37/79/a733f02dc2118da7e77a134b34f39f40201a353311b011d20859d2db3556/scikit_learn-1.9.0-cp311-cp311-win_arm64.whl", hash = "sha256:366652351f092b219c248f1e72821e841960a63d8f358f1dcfd54dc1cbdbbc28", size = 7919564, upload-time = "2026-06-02T11:53:21.2Z" }, + { url = "https://files.pythonhosted.org/packages/ac/20/75f915ff375d6249e6550ac740fdbbd66159a068fd3af1400ff62036b07a/scikit_learn-1.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2bd41b0d201bc81575531b96b713d3eb5e5f50fb0b82101ff0f92294fdc236ac", size = 8741122, upload-time = "2026-06-02T11:53:24.08Z" }, + { url = "https://files.pythonhosted.org/packages/cc/d5/2b5148f2279196775e1db2aeb85d14b70ac80e7e32b3b28e7ebeafb0901d/scikit_learn-1.9.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:5be45aa4a42a68a533913a6ed736cf309de2226411c79ef8d609a5456f1939b1", size = 8261512, upload-time = "2026-06-02T11:53:27.183Z" }, + { url = "https://files.pythonhosted.org/packages/a0/ee/5adbc77656b71f9456a2f5a7a9fdb4bcf9207a6b962889f1c2f9323afa4e/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e50ed4da51974e86e940690e9a3d82e729b62b5a49f7c9bac534d515d39d86f", size = 8837603, upload-time = "2026-06-02T11:53:30.328Z" }, + { url = "https://files.pythonhosted.org/packages/6c/c2/63fdda36c56437eeb44aaf9493c8bcd62ce230ab1598924fc626ffbfa943/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:056c92bb67ad4c28463c2f2653d9701449201e7e7a9e94e321be0f71c4fef2b8", size = 9132097, upload-time = "2026-06-02T11:53:33.456Z" }, + { url = "https://files.pythonhosted.org/packages/83/a4/c8e67227c680e2259c8864ae72ff48b06e16a6f51253a22167aa02a8aa4e/scikit_learn-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:4306775fad04cc4b472a1b15af1ae9cede1540fbfcc17fbce3767cd8dc7ae283", size = 8211173, upload-time = "2026-06-02T11:53:36.602Z" }, + { url = "https://files.pythonhosted.org/packages/cf/fd/3c0863792e98e67e9184aa4029288a175935eb65443afcd30d4f143450cf/scikit_learn-1.9.0-cp312-cp312-win_arm64.whl", hash = "sha256:26e22435f63bcdcf396b574273f29f13dd531f5ea035801f5be10ba1540a4e60", size = 7867451, upload-time = "2026-06-02T11:53:39.075Z" }, + { url = "https://files.pythonhosted.org/packages/3c/01/cf3310626b6d48d3e9be69a1223f9180360b5e6edb045f50fade723ce494/scikit_learn-1.9.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:80746d63bd4b6eaca54d36fe5feaf4d28bb38dc6f9470f81c7cad7c40155f119", size = 8705188, upload-time = "2026-06-02T11:53:41.964Z" }, + { url = "https://files.pythonhosted.org/packages/3e/04/5acd7ae280c5f93b6ac5ef6cdec14eef4c8d1cd91d85b3292989c94d96b1/scikit_learn-1.9.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5b934c45c252844a91d69fda3a34cff5e7307e1db10d77cb10a3980312c74713", size = 8228299, upload-time = "2026-06-02T11:53:44.817Z" }, + { url = "https://files.pythonhosted.org/packages/0c/39/ffe829a5b8ecb40a518724a997794657fdc354ada5e8fe8e64d998c0bac9/scikit_learn-1.9.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:38c3dcb9a1ffb85505ec53d54c7b4aea0cff70050425a7760c2af661ac85df05", size = 8789690, upload-time = "2026-06-02T11:53:47.461Z" }, + { url = "https://files.pythonhosted.org/packages/1f/88/8dab5de10c638c083772a6be83a3d8106ced492f74a928c8693638e5bb50/scikit_learn-1.9.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da76d09304a4706db7cc1e3ebaa3b6b98a67365cc11d2996c4f1e58ba47df714", size = 9087723, upload-time = "2026-06-02T11:53:50.702Z" }, + { url = "https://files.pythonhosted.org/packages/20/3f/7917ca72464038f6240ec70c29f94862d08a34a74291ae4d4ec5eb8186a0/scikit_learn-1.9.0-cp313-cp313-win_amd64.whl", hash = "sha256:5808d98f15c6bf6d9d96d2348c1997392a5888ce7097e664105f930c4bca1277", size = 8184330, upload-time = "2026-06-02T11:53:53.396Z" }, + { url = "https://files.pythonhosted.org/packages/78/c7/15739eb2f61fda3c54639e9942414e5a19ad8a8d1f5a3266afad7cb7df80/scikit_learn-1.9.0-cp313-cp313-win_arm64.whl", hash = "sha256:d77f54c017633791bc0225a43e2f8d03745fdcfe4880268fcc4df15f505dec2e", size = 7840653, upload-time = "2026-06-02T11:53:56.035Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7d/c9a35cf59b20a86fec24d306f1547b78dec194b08d367ce2a3e4854169d9/scikit_learn-1.9.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:9656acd4e93f74e0b66c8a36c88830a99252dfa900044d36bc2212ae89a47162", size = 8713289, upload-time = "2026-06-02T11:53:58.788Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a7/552a7821597c632b907f7bfe8f36f9f572777af8ef8a48353041cf8e091a/scikit_learn-1.9.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:24360002ae845e7866522b0a5bbf690802e7bc388cac8663502e78aa98598aa2", size = 8245141, upload-time = "2026-06-02T11:54:01.694Z" }, + { url = "https://files.pythonhosted.org/packages/7d/79/f4a0c4fe9711154cddabf913471153af79056382ddc612cfe5ee0ff4b72e/scikit_learn-1.9.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5162ad10a418c8a282dde04c9aa06965de3e9a65f33c1440c0ae69bb1a09d913", size = 8847671, upload-time = "2026-06-02T11:54:04.448Z" }, + { url = "https://files.pythonhosted.org/packages/f0/af/4d72d9e475ac83719160c662619e4bf7b95c19507cd582e7d0167a3c3dae/scikit_learn-1.9.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fea2cc5677ab49d6f5bade978c866da44957b712d92e9635e8b4f723013c3cb", size = 9118104, upload-time = "2026-06-02T11:54:07.205Z" }, + { url = "https://files.pythonhosted.org/packages/a2/d5/6a58eea2cb9abbb9b3f2bb8b2cfb3243d1152d69f442d256c7af71304769/scikit_learn-1.9.0-cp314-cp314-win_amd64.whl", hash = "sha256:64fa347efc1c839c487433e40c5144d38c336e8a2b59c81aa8660373945c2673", size = 8290674, upload-time = "2026-06-02T11:54:10.087Z" }, + { url = "https://files.pythonhosted.org/packages/65/5b/d4c879cf358f1187141cf90ced473f087183489090244f50c124a2ee478b/scikit_learn-1.9.0-cp314-cp314-win_arm64.whl", hash = "sha256:1b944b6db288f6b926e3650026ddafb988929de95d11fc2cc5fa117773c9ba42", size = 7978807, upload-time = "2026-06-02T11:54:12.769Z" }, + { url = "https://files.pythonhosted.org/packages/8a/43/bfae3121ec67ae09150d453c442c7c1cc166e9aefe056e6ab3b7728a5cfc/scikit_learn-1.9.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:4ccacf04ca5f4b492158a5f28afe0ace43f81b2571e4b9a66d34848b46128949", size = 9031941, upload-time = "2026-06-02T11:54:15.436Z" }, + { url = "https://files.pythonhosted.org/packages/75/b0/20a4546eb17f3b25d3c66df15810411c14ed5065bcfab50b53c96fb627b2/scikit_learn-1.9.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:ee1a8db2c18c08e34c7412d4b10be1cac214cd4ea7dc9715a6a327eb49a37c96", size = 8613528, upload-time = "2026-06-02T11:54:18.842Z" }, + { url = "https://files.pythonhosted.org/packages/18/3c/e440e039bb82cd19004edaaad00acbde0fb9b461083c3ecf37941c557312/scikit_learn-1.9.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:147e9329ef0e39f75d4cffa02b2aa48d827832684926cd5210d9a2cb5c57246b", size = 8855050, upload-time = "2026-06-02T11:54:21.699Z" }, + { url = "https://files.pythonhosted.org/packages/43/26/b341b8dab5998da6270a3a42c2152c578501354d36f944b5856757035ef8/scikit_learn-1.9.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bad8f8b9950321b54c965fdcbac6c6c55e79e16646b49977bcf3668d3870a1a", size = 9097190, upload-time = "2026-06-02T11:54:24.454Z" }, + { url = "https://files.pythonhosted.org/packages/fb/de/b650b4d69b84468cfa2e28a3ff7b8103743029e6446ce1a97fe060ef688c/scikit_learn-1.9.0-cp314-cp314t-win_amd64.whl", hash = "sha256:78fc56eafd4edb9575d2d8950d1dd152061abb573341a1cb7e099fc40f6c6666", size = 8963204, upload-time = "2026-06-02T11:54:27.428Z" }, + { url = "https://files.pythonhosted.org/packages/ee/f3/ff83d76d7418112e5a61326443cdda87be3545dd8d6599c95b2481a4419e/scikit_learn-1.9.0-cp314-cp314t-win_arm64.whl", hash = "sha256:051075bda8b7aab87b1906ab3d4740a1e1224a19d7b3781a576736edc94e76aa", size = 8222661, upload-time = "2026-06-02T11:54:30.192Z" }, +] + +[[package]] +name = "scipy" +version = "1.15.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload-time = "2025-05-08T16:04:20.849Z" }, + { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload-time = "2025-05-08T16:04:27.103Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload-time = "2025-05-08T16:04:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload-time = "2025-05-08T16:04:36.596Z" }, + { url = "https://files.pythonhosted.org/packages/db/0a/92b1de4a7adc7a15dcf5bddc6e191f6f29ee663b30511ce20467ef9b82e4/scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82", size = 35547617, upload-time = "2025-05-08T16:04:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40", size = 37662964, upload-time = "2025-05-08T16:04:49.431Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/3df8f83cb15f3500478c889be8fb18700813b95e9e087328230b98d547ff/scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e", size = 37238749, upload-time = "2025-05-08T16:04:55.215Z" }, + { url = "https://files.pythonhosted.org/packages/93/3e/b3257cf446f2a3533ed7809757039016b74cd6f38271de91682aa844cfc5/scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c", size = 40022383, upload-time = "2025-05-08T16:05:01.914Z" }, + { url = "https://files.pythonhosted.org/packages/d1/84/55bc4881973d3f79b479a5a2e2df61c8c9a04fcb986a213ac9c02cfb659b/scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13", size = 41259201, upload-time = "2025-05-08T16:05:08.166Z" }, + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, + { url = "https://files.pythonhosted.org/packages/73/18/ec27848c9baae6e0d6573eda6e01a602e5649ee72c27c3a8aad673ebecfd/scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759", size = 38728256, upload-time = "2025-05-08T16:06:58.696Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/1aef2184948728b4b6e21267d53b3339762c285a46a274ebb7863c9e4742/scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62", size = 30109540, upload-time = "2025-05-08T16:07:04.209Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d8/59e452c0a255ec352bd0a833537a3bc1bfb679944c4938ab375b0a6b3a3e/scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb", size = 22383115, upload-time = "2025-05-08T16:07:08.998Z" }, + { url = "https://files.pythonhosted.org/packages/08/f5/456f56bbbfccf696263b47095291040655e3cbaf05d063bdc7c7517f32ac/scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730", size = 25163884, upload-time = "2025-05-08T16:07:14.091Z" }, + { url = "https://files.pythonhosted.org/packages/a2/66/a9618b6a435a0f0c0b8a6d0a2efb32d4ec5a85f023c2b79d39512040355b/scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825", size = 35174018, upload-time = "2025-05-08T16:07:19.427Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/c5b6734a50ad4882432b6bb7c02baf757f5b2f256041da5df242e2d7e6b6/scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7", size = 37269716, upload-time = "2025-05-08T16:07:25.712Z" }, + { url = "https://files.pythonhosted.org/packages/77/0a/eac00ff741f23bcabd352731ed9b8995a0a60ef57f5fd788d611d43d69a1/scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11", size = 36872342, upload-time = "2025-05-08T16:07:31.468Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/4379be86dd74b6ad81551689107360d9a3e18f24d20767a2d5b9253a3f0a/scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126", size = 39670869, upload-time = "2025-05-08T16:07:38.002Z" }, + { url = "https://files.pythonhosted.org/packages/87/2e/892ad2862ba54f084ffe8cc4a22667eaf9c2bcec6d2bff1d15713c6c0703/scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163", size = 40988851, upload-time = "2025-05-08T16:08:33.671Z" }, + { url = "https://files.pythonhosted.org/packages/1b/e9/7a879c137f7e55b30d75d90ce3eb468197646bc7b443ac036ae3fe109055/scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8", size = 38863011, upload-time = "2025-05-08T16:07:44.039Z" }, + { url = "https://files.pythonhosted.org/packages/51/d1/226a806bbd69f62ce5ef5f3ffadc35286e9fbc802f606a07eb83bf2359de/scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5", size = 30266407, upload-time = "2025-05-08T16:07:49.891Z" }, + { url = "https://files.pythonhosted.org/packages/e5/9b/f32d1d6093ab9eeabbd839b0f7619c62e46cc4b7b6dbf05b6e615bbd4400/scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e", size = 22540030, upload-time = "2025-05-08T16:07:54.121Z" }, + { url = "https://files.pythonhosted.org/packages/e7/29/c278f699b095c1a884f29fda126340fcc201461ee8bfea5c8bdb1c7c958b/scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb", size = 25218709, upload-time = "2025-05-08T16:07:58.506Z" }, + { url = "https://files.pythonhosted.org/packages/24/18/9e5374b617aba742a990581373cd6b68a2945d65cc588482749ef2e64467/scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723", size = 34809045, upload-time = "2025-05-08T16:08:03.929Z" }, + { url = "https://files.pythonhosted.org/packages/e1/fe/9c4361e7ba2927074360856db6135ef4904d505e9b3afbbcb073c4008328/scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb", size = 36703062, upload-time = "2025-05-08T16:08:09.558Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/038ccfe29d272b30086b25a4960f757f97122cb2ec42e62b460d02fe98e9/scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4", size = 36393132, upload-time = "2025-05-08T16:08:15.34Z" }, + { url = "https://files.pythonhosted.org/packages/10/7e/5c12285452970be5bdbe8352c619250b97ebf7917d7a9a9e96b8a8140f17/scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5", size = 38979503, upload-time = "2025-05-08T16:08:21.513Z" }, + { url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload-time = "2025-05-08T16:08:27.627Z" }, +] + +[[package]] +name = "scipy" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/97/5a3609c4f8d58b039179648e62dd220f89864f56f7357f5d4f45c29eb2cc/scipy-1.17.1.tar.gz", hash = "sha256:95d8e012d8cb8816c226aef832200b1d45109ed4464303e997c5b13122b297c0", size = 30573822, upload-time = "2026-02-23T00:26:24.851Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/75/b4ce781849931fef6fd529afa6b63711d5a733065722d0c3e2724af9e40a/scipy-1.17.1-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:1f95b894f13729334fb990162e911c9e5dc1ab390c58aa6cbecb389c5b5e28ec", size = 31613675, upload-time = "2026-02-23T00:16:00.13Z" }, + { url = "https://files.pythonhosted.org/packages/f7/58/bccc2861b305abdd1b8663d6130c0b3d7cc22e8d86663edbc8401bfd40d4/scipy-1.17.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:e18f12c6b0bc5a592ed23d3f7b891f68fd7f8241d69b7883769eb5d5dfb52696", size = 28162057, upload-time = "2026-02-23T00:16:09.456Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ee/18146b7757ed4976276b9c9819108adbc73c5aad636e5353e20746b73069/scipy-1.17.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a3472cfbca0a54177d0faa68f697d8ba4c80bbdc19908c3465556d9f7efce9ee", size = 20334032, upload-time = "2026-02-23T00:16:17.358Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e6/cef1cf3557f0c54954198554a10016b6a03b2ec9e22a4e1df734936bd99c/scipy-1.17.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:766e0dc5a616d026a3a1cffa379af959671729083882f50307e18175797b3dfd", size = 22709533, upload-time = "2026-02-23T00:16:25.791Z" }, + { url = "https://files.pythonhosted.org/packages/4d/60/8804678875fc59362b0fb759ab3ecce1f09c10a735680318ac30da8cd76b/scipy-1.17.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:744b2bf3640d907b79f3fd7874efe432d1cf171ee721243e350f55234b4cec4c", size = 33062057, upload-time = "2026-02-23T00:16:36.931Z" }, + { url = "https://files.pythonhosted.org/packages/09/7d/af933f0f6e0767995b4e2d705a0665e454d1c19402aa7e895de3951ebb04/scipy-1.17.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43af8d1f3bea642559019edfe64e9b11192a8978efbd1539d7bc2aaa23d92de4", size = 35349300, upload-time = "2026-02-23T00:16:49.108Z" }, + { url = "https://files.pythonhosted.org/packages/b4/3d/7ccbbdcbb54c8fdc20d3b6930137c782a163fa626f0aef920349873421ba/scipy-1.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd96a1898c0a47be4520327e01f874acfd61fb48a9420f8aa9f6483412ffa444", size = 35127333, upload-time = "2026-02-23T00:17:01.293Z" }, + { url = "https://files.pythonhosted.org/packages/e8/19/f926cb11c42b15ba08e3a71e376d816ac08614f769b4f47e06c3580c836a/scipy-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4eb6c25dd62ee8d5edf68a8e1c171dd71c292fdae95d8aeb3dd7d7de4c364082", size = 37741314, upload-time = "2026-02-23T00:17:12.576Z" }, + { url = "https://files.pythonhosted.org/packages/95/da/0d1df507cf574b3f224ccc3d45244c9a1d732c81dcb26b1e8a766ae271a8/scipy-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:d30e57c72013c2a4fe441c2fcb8e77b14e152ad48b5464858e07e2ad9fbfceff", size = 36607512, upload-time = "2026-02-23T00:17:23.424Z" }, + { url = "https://files.pythonhosted.org/packages/68/7f/bdd79ceaad24b671543ffe0ef61ed8e659440eb683b66f033454dcee90eb/scipy-1.17.1-cp311-cp311-win_arm64.whl", hash = "sha256:9ecb4efb1cd6e8c4afea0daa91a87fbddbce1b99d2895d151596716c0b2e859d", size = 24599248, upload-time = "2026-02-23T00:17:34.561Z" }, + { url = "https://files.pythonhosted.org/packages/35/48/b992b488d6f299dbe3f11a20b24d3dda3d46f1a635ede1c46b5b17a7b163/scipy-1.17.1-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:35c3a56d2ef83efc372eaec584314bd0ef2e2f0d2adb21c55e6ad5b344c0dcb8", size = 31610954, upload-time = "2026-02-23T00:17:49.855Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/cf107b01494c19dc100f1d0b7ac3cc08666e96ba2d64db7626066cee895e/scipy-1.17.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:fcb310ddb270a06114bb64bbe53c94926b943f5b7f0842194d585c65eb4edd76", size = 28172662, upload-time = "2026-02-23T00:18:01.64Z" }, + { url = "https://files.pythonhosted.org/packages/cf/a9/599c28631bad314d219cf9ffd40e985b24d603fc8a2f4ccc5ae8419a535b/scipy-1.17.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:cc90d2e9c7e5c7f1a482c9875007c095c3194b1cfedca3c2f3291cdc2bc7c086", size = 20344366, upload-time = "2026-02-23T00:18:12.015Z" }, + { url = "https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:c80be5ede8f3f8eded4eff73cc99a25c388ce98e555b17d31da05287015ffa5b", size = 22704017, upload-time = "2026-02-23T00:18:21.502Z" }, + { url = "https://files.pythonhosted.org/packages/da/34/16f10e3042d2f1d6b66e0428308ab52224b6a23049cb2f5c1756f713815f/scipy-1.17.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e19ebea31758fac5893a2ac360fedd00116cbb7628e650842a6691ba7ca28a21", size = 32927842, upload-time = "2026-02-23T00:18:35.367Z" }, + { url = "https://files.pythonhosted.org/packages/01/8e/1e35281b8ab6d5d72ebe9911edcdffa3f36b04ed9d51dec6dd140396e220/scipy-1.17.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02ae3b274fde71c5e92ac4d54bc06c42d80e399fec704383dcd99b301df37458", size = 35235890, upload-time = "2026-02-23T00:18:49.188Z" }, + { url = "https://files.pythonhosted.org/packages/c5/5c/9d7f4c88bea6e0d5a4f1bc0506a53a00e9fcb198de372bfe4d3652cef482/scipy-1.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a604bae87c6195d8b1045eddece0514d041604b14f2727bbc2b3020172045eb", size = 35003557, upload-time = "2026-02-23T00:18:54.74Z" }, + { url = "https://files.pythonhosted.org/packages/65/94/7698add8f276dbab7a9de9fb6b0e02fc13ee61d51c7c3f85ac28b65e1239/scipy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f590cd684941912d10becc07325a3eeb77886fe981415660d9265c4c418d0bea", size = 37625856, upload-time = "2026-02-23T00:19:00.307Z" }, + { url = "https://files.pythonhosted.org/packages/a2/84/dc08d77fbf3d87d3ee27f6a0c6dcce1de5829a64f2eae85a0ecc1f0daa73/scipy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:41b71f4a3a4cab9d366cd9065b288efc4d4f3c0b37a91a8e0947fb5bd7f31d87", size = 36549682, upload-time = "2026-02-23T00:19:07.67Z" }, + { url = "https://files.pythonhosted.org/packages/bc/98/fe9ae9ffb3b54b62559f52dedaebe204b408db8109a8c66fdd04869e6424/scipy-1.17.1-cp312-cp312-win_arm64.whl", hash = "sha256:f4115102802df98b2b0db3cce5cb9b92572633a1197c77b7553e5203f284a5b3", size = 24547340, upload-time = "2026-02-23T00:19:12.024Z" }, + { url = "https://files.pythonhosted.org/packages/76/27/07ee1b57b65e92645f219b37148a7e7928b82e2b5dbeccecb4dff7c64f0b/scipy-1.17.1-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:5e3c5c011904115f88a39308379c17f91546f77c1667cea98739fe0fccea804c", size = 31590199, upload-time = "2026-02-23T00:19:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ae/db19f8ab842e9b724bf5dbb7db29302a91f1e55bc4d04b1025d6d605a2c5/scipy-1.17.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:6fac755ca3d2c3edcb22f479fceaa241704111414831ddd3bc6056e18516892f", size = 28154001, upload-time = "2026-02-23T00:19:22.241Z" }, + { url = "https://files.pythonhosted.org/packages/5b/58/3ce96251560107b381cbd6e8413c483bbb1228a6b919fa8652b0d4090e7f/scipy-1.17.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:7ff200bf9d24f2e4d5dc6ee8c3ac64d739d3a89e2326ba68aaf6c4a2b838fd7d", size = 20325719, upload-time = "2026-02-23T00:19:26.329Z" }, + { url = "https://files.pythonhosted.org/packages/b2/83/15087d945e0e4d48ce2377498abf5ad171ae013232ae31d06f336e64c999/scipy-1.17.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4b400bdc6f79fa02a4d86640310dde87a21fba0c979efff5248908c6f15fad1b", size = 22683595, upload-time = "2026-02-23T00:19:30.304Z" }, + { url = "https://files.pythonhosted.org/packages/b4/e0/e58fbde4a1a594c8be8114eb4aac1a55bcd6587047efc18a61eb1f5c0d30/scipy-1.17.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2b64ca7d4aee0102a97f3ba22124052b4bd2152522355073580bf4845e2550b6", size = 32896429, upload-time = "2026-02-23T00:19:35.536Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5f/f17563f28ff03c7b6799c50d01d5d856a1d55f2676f537ca8d28c7f627cd/scipy-1.17.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:581b2264fc0aa555f3f435a5944da7504ea3a065d7029ad60e7c3d1ae09c5464", size = 35203952, upload-time = "2026-02-23T00:19:42.259Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a5/9afd17de24f657fdfe4df9a3f1ea049b39aef7c06000c13db1530d81ccca/scipy-1.17.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:beeda3d4ae615106d7094f7e7cef6218392e4465cc95d25f900bebabfded0950", size = 34979063, upload-time = "2026-02-23T00:19:47.547Z" }, + { url = "https://files.pythonhosted.org/packages/8b/13/88b1d2384b424bf7c924f2038c1c409f8d88bb2a8d49d097861dd64a57b2/scipy-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6609bc224e9568f65064cfa72edc0f24ee6655b47575954ec6339534b2798369", size = 37598449, upload-time = "2026-02-23T00:19:53.238Z" }, + { url = "https://files.pythonhosted.org/packages/35/e5/d6d0e51fc888f692a35134336866341c08655d92614f492c6860dc45bb2c/scipy-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:37425bc9175607b0268f493d79a292c39f9d001a357bebb6b88fdfaff13f6448", size = 36510943, upload-time = "2026-02-23T00:20:50.89Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fd/3be73c564e2a01e690e19cc618811540ba5354c67c8680dce3281123fb79/scipy-1.17.1-cp313-cp313-win_arm64.whl", hash = "sha256:5cf36e801231b6a2059bf354720274b7558746f3b1a4efb43fcf557ccd484a87", size = 24545621, upload-time = "2026-02-23T00:20:55.871Z" }, + { url = "https://files.pythonhosted.org/packages/6f/6b/17787db8b8114933a66f9dcc479a8272e4b4da75fe03b0c282f7b0ade8cd/scipy-1.17.1-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:d59c30000a16d8edc7e64152e30220bfbd724c9bbb08368c054e24c651314f0a", size = 31936708, upload-time = "2026-02-23T00:19:58.694Z" }, + { url = "https://files.pythonhosted.org/packages/38/2e/524405c2b6392765ab1e2b722a41d5da33dc5c7b7278184a8ad29b6cb206/scipy-1.17.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:010f4333c96c9bb1a4516269e33cb5917b08ef2166d5556ca2fd9f082a9e6ea0", size = 28570135, upload-time = "2026-02-23T00:20:03.934Z" }, + { url = "https://files.pythonhosted.org/packages/fd/c3/5bd7199f4ea8556c0c8e39f04ccb014ac37d1468e6cfa6a95c6b3562b76e/scipy-1.17.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:2ceb2d3e01c5f1d83c4189737a42d9cb2fc38a6eeed225e7515eef71ad301dce", size = 20741977, upload-time = "2026-02-23T00:20:07.935Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b8/8ccd9b766ad14c78386599708eb745f6b44f08400a5fd0ade7cf89b6fc93/scipy-1.17.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:844e165636711ef41f80b4103ed234181646b98a53c8f05da12ca5ca289134f6", size = 23029601, upload-time = "2026-02-23T00:20:12.161Z" }, + { url = "https://files.pythonhosted.org/packages/6d/a0/3cb6f4d2fb3e17428ad2880333cac878909ad1a89f678527b5328b93c1d4/scipy-1.17.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:158dd96d2207e21c966063e1635b1063cd7787b627b6f07305315dd73d9c679e", size = 33019667, upload-time = "2026-02-23T00:20:17.208Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c3/2d834a5ac7bf3a0c806ad1508efc02dda3c8c61472a56132d7894c312dea/scipy-1.17.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74cbb80d93260fe2ffa334efa24cb8f2f0f622a9b9febf8b483c0b865bfb3475", size = 35264159, upload-time = "2026-02-23T00:20:23.087Z" }, + { url = "https://files.pythonhosted.org/packages/4d/77/d3ed4becfdbd217c52062fafe35a72388d1bd82c2d0ba5ca19d6fcc93e11/scipy-1.17.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dbc12c9f3d185f5c737d801da555fb74b3dcfa1a50b66a1a93e09190f41fab50", size = 35102771, upload-time = "2026-02-23T00:20:28.636Z" }, + { url = "https://files.pythonhosted.org/packages/bd/12/d19da97efde68ca1ee5538bb261d5d2c062f0c055575128f11a2730e3ac1/scipy-1.17.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:94055a11dfebe37c656e70317e1996dc197e1a15bbcc351bcdd4610e128fe1ca", size = 37665910, upload-time = "2026-02-23T00:20:34.743Z" }, + { url = "https://files.pythonhosted.org/packages/06/1c/1172a88d507a4baaf72c5a09bb6c018fe2ae0ab622e5830b703a46cc9e44/scipy-1.17.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e30bdeaa5deed6bc27b4cc490823cd0347d7dae09119b8803ae576ea0ce52e4c", size = 36562980, upload-time = "2026-02-23T00:20:40.575Z" }, + { url = "https://files.pythonhosted.org/packages/70/b0/eb757336e5a76dfa7911f63252e3b7d1de00935d7705cf772db5b45ec238/scipy-1.17.1-cp313-cp313t-win_arm64.whl", hash = "sha256:a720477885a9d2411f94a93d16f9d89bad0f28ca23c3f8daa521e2dcc3f44d49", size = 24856543, upload-time = "2026-02-23T00:20:45.313Z" }, + { url = "https://files.pythonhosted.org/packages/cf/83/333afb452af6f0fd70414dc04f898647ee1423979ce02efa75c3b0f2c28e/scipy-1.17.1-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:a48a72c77a310327f6a3a920092fa2b8fd03d7deaa60f093038f22d98e096717", size = 31584510, upload-time = "2026-02-23T00:21:01.015Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a6/d05a85fd51daeb2e4ea71d102f15b34fedca8e931af02594193ae4fd25f7/scipy-1.17.1-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:45abad819184f07240d8a696117a7aacd39787af9e0b719d00285549ed19a1e9", size = 28170131, upload-time = "2026-02-23T00:21:05.888Z" }, + { url = "https://files.pythonhosted.org/packages/db/7b/8624a203326675d7746a254083a187398090a179335b2e4a20e2ddc46e83/scipy-1.17.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:3fd1fcdab3ea951b610dc4cef356d416d5802991e7e32b5254828d342f7b7e0b", size = 20342032, upload-time = "2026-02-23T00:21:09.904Z" }, + { url = "https://files.pythonhosted.org/packages/c9/35/2c342897c00775d688d8ff3987aced3426858fd89d5a0e26e020b660b301/scipy-1.17.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:7bdf2da170b67fdf10bca777614b1c7d96ae3ca5794fd9587dce41eb2966e866", size = 22678766, upload-time = "2026-02-23T00:21:14.313Z" }, + { url = "https://files.pythonhosted.org/packages/ef/f2/7cdb8eb308a1a6ae1e19f945913c82c23c0c442a462a46480ce487fdc0ac/scipy-1.17.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:adb2642e060a6549c343603a3851ba76ef0b74cc8c079a9a58121c7ec9fe2350", size = 32957007, upload-time = "2026-02-23T00:21:19.663Z" }, + { url = "https://files.pythonhosted.org/packages/0b/2e/7eea398450457ecb54e18e9d10110993fa65561c4f3add5e8eccd2b9cd41/scipy-1.17.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eee2cfda04c00a857206a4330f0c5e3e56535494e30ca445eb19ec624ae75118", size = 35221333, upload-time = "2026-02-23T00:21:25.278Z" }, + { url = "https://files.pythonhosted.org/packages/d9/77/5b8509d03b77f093a0d52e606d3c4f79e8b06d1d38c441dacb1e26cacf46/scipy-1.17.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d2650c1fb97e184d12d8ba010493ee7b322864f7d3d00d3f9bb97d9c21de4068", size = 35042066, upload-time = "2026-02-23T00:21:31.358Z" }, + { url = "https://files.pythonhosted.org/packages/f9/df/18f80fb99df40b4070328d5ae5c596f2f00fffb50167e31439e932f29e7d/scipy-1.17.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:08b900519463543aa604a06bec02461558a6e1cef8fdbb8098f77a48a83c8118", size = 37612763, upload-time = "2026-02-23T00:21:37.247Z" }, + { url = "https://files.pythonhosted.org/packages/4b/39/f0e8ea762a764a9dc52aa7dabcfad51a354819de1f0d4652b6a1122424d6/scipy-1.17.1-cp314-cp314-win_amd64.whl", hash = "sha256:3877ac408e14da24a6196de0ddcace62092bfc12a83823e92e49e40747e52c19", size = 37290984, upload-time = "2026-02-23T00:22:35.023Z" }, + { url = "https://files.pythonhosted.org/packages/7c/56/fe201e3b0f93d1a8bcf75d3379affd228a63d7e2d80ab45467a74b494947/scipy-1.17.1-cp314-cp314-win_arm64.whl", hash = "sha256:f8885db0bc2bffa59d5c1b72fad7a6a92d3e80e7257f967dd81abb553a90d293", size = 25192877, upload-time = "2026-02-23T00:22:39.798Z" }, + { url = "https://files.pythonhosted.org/packages/96/ad/f8c414e121f82e02d76f310f16db9899c4fcde36710329502a6b2a3c0392/scipy-1.17.1-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:1cc682cea2ae55524432f3cdff9e9a3be743d52a7443d0cba9017c23c87ae2f6", size = 31949750, upload-time = "2026-02-23T00:21:42.289Z" }, + { url = "https://files.pythonhosted.org/packages/7c/b0/c741e8865d61b67c81e255f4f0a832846c064e426636cd7de84e74d209be/scipy-1.17.1-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:2040ad4d1795a0ae89bfc7e8429677f365d45aa9fd5e4587cf1ea737f927b4a1", size = 28585858, upload-time = "2026-02-23T00:21:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1b/3985219c6177866628fa7c2595bfd23f193ceebbe472c98a08824b9466ff/scipy-1.17.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:131f5aaea57602008f9822e2115029b55d4b5f7c070287699fe45c661d051e39", size = 20757723, upload-time = "2026-02-23T00:21:52.039Z" }, + { url = "https://files.pythonhosted.org/packages/c0/19/2a04aa25050d656d6f7b9e7b685cc83d6957fb101665bfd9369ca6534563/scipy-1.17.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:9cdc1a2fcfd5c52cfb3045feb399f7b3ce822abdde3a193a6b9a60b3cb5854ca", size = 23043098, upload-time = "2026-02-23T00:21:56.185Z" }, + { url = "https://files.pythonhosted.org/packages/86/f1/3383beb9b5d0dbddd030335bf8a8b32d4317185efe495374f134d8be6cce/scipy-1.17.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e3dcd57ab780c741fde8dc68619de988b966db759a3c3152e8e9142c26295ad", size = 33030397, upload-time = "2026-02-23T00:22:01.404Z" }, + { url = "https://files.pythonhosted.org/packages/41/68/8f21e8a65a5a03f25a79165ec9d2b28c00e66dc80546cf5eb803aeeff35b/scipy-1.17.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a9956e4d4f4a301ebf6cde39850333a6b6110799d470dbbb1e25326ac447f52a", size = 35281163, upload-time = "2026-02-23T00:22:07.024Z" }, + { url = "https://files.pythonhosted.org/packages/84/8d/c8a5e19479554007a5632ed7529e665c315ae7492b4f946b0deb39870e39/scipy-1.17.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:a4328d245944d09fd639771de275701ccadf5f781ba0ff092ad141e017eccda4", size = 35116291, upload-time = "2026-02-23T00:22:12.585Z" }, + { url = "https://files.pythonhosted.org/packages/52/52/e57eceff0e342a1f50e274264ed47497b59e6a4e3118808ee58ddda7b74a/scipy-1.17.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a77cbd07b940d326d39a1d1b37817e2ee4d79cb30e7338f3d0cddffae70fcaa2", size = 37682317, upload-time = "2026-02-23T00:22:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/11/2f/b29eafe4a3fbc3d6de9662b36e028d5f039e72d345e05c250e121a230dd4/scipy-1.17.1-cp314-cp314t-win_amd64.whl", hash = "sha256:eb092099205ef62cd1782b006658db09e2fed75bffcae7cc0d44052d8aa0f484", size = 37345327, upload-time = "2026-02-23T00:22:24.442Z" }, + { url = "https://files.pythonhosted.org/packages/07/39/338d9219c4e87f3e708f18857ecd24d22a0c3094752393319553096b98af/scipy-1.17.1-cp314-cp314t-win_arm64.whl", hash = "sha256:200e1050faffacc162be6a486a984a0497866ec54149a01270adc8a59b7c7d21", size = 25489165, upload-time = "2026-02-23T00:22:29.563Z" }, +] + +[[package]] +name = "scipy" +version = "1.18.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", +] +dependencies = [ + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/25/c2700dfaf6442b4effaa91af24ebce5dc9d31bb4a69706313aae70d72cd0/scipy-1.18.0.tar.gz", hash = "sha256:67b2ad2ad54c72ca6d04975a9b2df8c3638c34ddd5b28738e94fc2b57929d378", size = 30774447, upload-time = "2026-06-19T15:01:43.456Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7bd21faaf5a1a3b2eff922d02db5f191b99a6518db9078a8fb23169f6d22259a", size = 31056519, upload-time = "2026-06-19T14:59:45.203Z" }, + { url = "https://files.pythonhosted.org/packages/96/72/1e6442a00cd2924d361aa1b642ab6373ec35c6fabf311a760be9f76e0f13/scipy-1.18.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:265915e79107de9f946b855e50d7470d5893ec3f54b342e1aa6201cbdcd8bb6b", size = 28681889, upload-time = "2026-06-19T14:59:48.103Z" }, + { url = "https://files.pythonhosted.org/packages/9b/2d/11dd93d21e147a73ba22bd75c0b9208d3a2e0ec76d53170ce7d9029b1015/scipy-1.18.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9ab7b758be6940954a713ee466e2043e9f6e2ed965c1fce5c91039f4be3d90a9", size = 20423580, upload-time = "2026-06-19T14:59:50.665Z" }, + { url = "https://files.pythonhosted.org/packages/9c/01/93552f75e0d2a7dd115a45e59209c51e8d514daff02fc887d2623be06fe1/scipy-1.18.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:97b6cddaaee0a779ef6b5ca83c9604b27cc16b2b8fc22c142652df8793319fb8", size = 23054441, upload-time = "2026-06-19T14:59:53.564Z" }, + { url = "https://files.pythonhosted.org/packages/3c/23/21f5e703643d66f21faa6b4c73195bfcad70c55efcb4f1ab327cd7c4101a/scipy-1.18.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:52a96e21517c7292375c0e27dd796a811f03fcea5fd4d108fdfea8145dcf17ab", size = 33968720, upload-time = "2026-06-19T14:59:56.415Z" }, + { url = "https://files.pythonhosted.org/packages/dd/aa/1b939f6c67ed68635bb538e6752d3dacc02f66535182e939a89581a44e9c/scipy-1.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f55797419e16e7f30cf88ffb3113ce0467f00cfe3f70d5c281730b21769bfc2", size = 35287115, upload-time = "2026-06-19T14:59:59.411Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ff/eec46be7e9234208f801062b53e1983085eddebd693f6c9bfb03b459830d/scipy-1.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ad033410e2e0672ffdc1042110cef20e1c46f8fd0616cee1d44d8d58fad8fc11", size = 35577989, upload-time = "2026-06-19T15:00:02.235Z" }, + { url = "https://files.pythonhosted.org/packages/84/ca/210d4759c7210bb7d269437421959b39a33434e2776b60c5cb8a763bb30a/scipy-1.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a55985d54c769c872e64b7f4c8a81cc30ef700cc04296abbbf3705439c126de", size = 37421717, upload-time = "2026-06-19T15:00:05.102Z" }, + { url = "https://files.pythonhosted.org/packages/2b/54/9a9edb45345bd6744da5ddfb6628e5d5185920494c6a67ec45b6381004cb/scipy-1.18.0-cp312-cp312-win_amd64.whl", hash = "sha256:71ccc8faa2dd16ac310233203474a8b5cb67f10dedd54a3116d34943f4b19132", size = 36597428, upload-time = "2026-06-19T15:00:08.112Z" }, + { url = "https://files.pythonhosted.org/packages/99/0e/33f32a2a58987e26aec0f7df252cbbad1e90ae77bdbc76f40dd4ed0cf0ea/scipy-1.18.0-cp312-cp312-win_arm64.whl", hash = "sha256:d88363fd9d8fbd3511bd273f1a49efb2a540773ddf92a91d57498ce7dd7f3e76", size = 24351481, upload-time = "2026-06-19T15:00:11.103Z" }, + { url = "https://files.pythonhosted.org/packages/05/52/9c0136c2de7ae0779b7b366447766cec6d9f0702c56bb8ffeb04c8fd3af4/scipy-1.18.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:09143f676d157d9f546d663504ef9c1becb819824f1afc018814176411942446", size = 31036107, upload-time = "2026-06-19T15:00:14.03Z" }, + { url = "https://files.pythonhosted.org/packages/02/73/0291a64843270f4efb86cdcf2ee0f2048631b65ec6b405398b2b4dbf11bf/scipy-1.18.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5efe260f69417b97ddae455bfb5a95e8359f7f66ad7fa9522a60feb66f169520", size = 28663303, upload-time = "2026-06-19T15:00:16.819Z" }, + { url = "https://files.pythonhosted.org/packages/d3/0f/10ffa0b697a572f4e0d48b92a88895d366422f019f723e7e14a84c050dac/scipy-1.18.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:68363b7eaacd8b5dd426df56d782cc156468ac79a127a1b87ca597d6e2e82197", size = 20404960, upload-time = "2026-06-19T15:00:19.635Z" }, + { url = "https://files.pythonhosted.org/packages/7e/d2/e896cea21ba8edd6c81d4c55b1ffcc717e79698dcbebf9641b4cfb4c6622/scipy-1.18.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:c5557d8be5da8e41353fcd4d21491fdbab83b062fc579e94dc09a7c8ab4f669b", size = 23034074, upload-time = "2026-06-19T15:00:22.107Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b2/e83ea34279a52c03374477c74006256ec78df65fc877baa4617d6de1d202/scipy-1.18.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0d13bca67c096d89fb95ced0d8921807300fce0275643aef9533cc63a0773468", size = 33942038, upload-time = "2026-06-19T15:00:24.964Z" }, + { url = "https://files.pythonhosted.org/packages/f6/af/e8fe5fb136f51e2b01678b92cb4106d10d8cd68ec147ead2e7cb0ac75398/scipy-1.18.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a46f9273dbd0eb1cefba61c9b8648b4dfe3cbc14a080176f9a73e44b8336dc7f", size = 35266390, upload-time = "2026-06-19T15:00:28.059Z" }, + { url = "https://files.pythonhosted.org/packages/3a/49/2c5cbb907b56695fc67517811d1db234dfd83381a84814ec220aded2794d/scipy-1.18.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5aba46108853ddfc77906b6557aac839d2b52e900c1d72a1180adaaab58d265f", size = 35551324, upload-time = "2026-06-19T15:00:31.014Z" }, + { url = "https://files.pythonhosted.org/packages/bb/73/eda39f7a2d306ff0ffc574afd13c0bbb6d10a603d9a413998ee269487a80/scipy-1.18.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b6f758e35f12757b5d95c00bc6de2438e229c2664b7a92e96f205959d9f2dfa4", size = 37404785, upload-time = "2026-06-19T15:00:34.072Z" }, + { url = "https://files.pythonhosted.org/packages/b7/d2/ae881ee28d014f38e0ccbfd974a06a919ba9af34f1f74bf42b5301891d63/scipy-1.18.0-cp313-cp313-win_amd64.whl", hash = "sha256:1afac4a847207c7ff8efd321734a50b06d0280b3b2a2c0fc2f413101747ad7c7", size = 36554943, upload-time = "2026-06-19T15:00:36.903Z" }, + { url = "https://files.pythonhosted.org/packages/70/3a/21154e2d54eb3639c6bf4dbae2e531c68356bfe95990daa30df33b30d556/scipy-1.18.0-cp313-cp313-win_arm64.whl", hash = "sha256:c5dbddf60e58c2312316d097271a8e73d40eaf2eabfa4d95ed7d3695bbf2ce7b", size = 24350911, upload-time = "2026-06-19T15:00:40.062Z" }, + { url = "https://files.pythonhosted.org/packages/78/b5/915a19b3de2f7430062b509653563db1633ddbb6f021b06731521115d4e2/scipy-1.18.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:4c256ee70c0d1a8a2ace807e199ccd4e3f57037433842abb3fb36bc17eaa9578", size = 31036253, upload-time = "2026-06-19T15:00:43.216Z" }, + { url = "https://files.pythonhosted.org/packages/d7/88/b72def7262e150d16be13fca37a96481138d624e700340bc3362a7588929/scipy-1.18.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:2ef3abc54a4ffc53765374b0d5728532dfdd2585ed23f6b11c206a1f0b1b9af8", size = 28673758, upload-time = "2026-06-19T15:00:46.663Z" }, + { url = "https://files.pythonhosted.org/packages/91/02/2e636a61a525632c373cf6a9c24442a3ffb79e364d38e98b32042964ac32/scipy-1.18.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f2a6af57bd9e4a75d70e4117e78a1bbee84f79ae3fbb6d0111005d6ebcc4cb8d", size = 20415514, upload-time = "2026-06-19T15:00:49.399Z" }, + { url = "https://files.pythonhosted.org/packages/c9/b6/2135974442f6aba159d9d39d774a1c8cb19947016725d69fecc685df45bf/scipy-1.18.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:3f1ac564d3bf6c03d861d2cd87a1bea0da2887136f7fb1bf519c05a8971452d6", size = 23034398, upload-time = "2026-06-19T15:00:51.941Z" }, + { url = "https://files.pythonhosted.org/packages/f6/e6/ba89ec5abf6ee9257c0d1ec985573f3ae32742c24bc03e016388a40b1b15/scipy-1.18.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40395a5fcd1abee49a5c7aaa98c29db393eedc835138560a588c47ec16156690", size = 33998032, upload-time = "2026-06-19T15:00:54.838Z" }, + { url = "https://files.pythonhosted.org/packages/7f/c4/bc41eb19b0fd0db868f4132920879019318d80cc522ad8f2bca4611af808/scipy-1.18.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8ca01e8ae69f1b18e9a58d91afead31be3cef0dd905a10249dac559ee15460a0", size = 35283333, upload-time = "2026-06-19T15:00:58.152Z" }, + { url = "https://files.pythonhosted.org/packages/53/a4/cbdeef6eb3830a8462a9d4ada814de5fc984345cc9ecf17cbec51a036f1e/scipy-1.18.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7a7f3b01647384dbc3a711e8c6778e0aabbe93959249fef5c7393396bcac0867", size = 35610216, upload-time = "2026-06-19T15:01:01.155Z" }, + { url = "https://files.pythonhosted.org/packages/80/4d/b2b82502b65f661d1b789c1665dcdf315d5f12194e06fc0b37946294ebae/scipy-1.18.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6aa94e78ec192a30063a5e72e561c28af769dc311190b24fe91774eff1969709", size = 37418960, upload-time = "2026-06-19T15:01:04.155Z" }, + { url = "https://files.pythonhosted.org/packages/93/3e/902d836831474b0ab5a37d16404f7bc5fafd9efba632890e271ba952635f/scipy-1.18.0-cp314-cp314-win_amd64.whl", hash = "sha256:2d8bbdc6c817f5b4006a54d799d4f5bab6f910193cbb9a1ff310833d4d270f61", size = 37288845, upload-time = "2026-06-19T15:01:07.822Z" }, + { url = "https://files.pythonhosted.org/packages/b6/43/8d73b337a3bdb14daa0314f0434210747c02d79d729ce1777574a817dcf6/scipy-1.18.0-cp314-cp314-win_arm64.whl", hash = "sha256:18e9575f1569b2c54174e6159d32942e03731177f63dce7975f0a0c88d102f5b", size = 24988971, upload-time = "2026-06-19T15:01:11.076Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b4/f11918b0508a2787031a0499a03fbe3546f3bb5ca05d01038c45b278c09a/scipy-1.18.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:f351e0dd702687d12a402b867a1b4146a256923e1c38317cbc472f6372b94707", size = 31399325, upload-time = "2026-06-19T15:01:13.723Z" }, + { url = "https://files.pythonhosted.org/packages/7b/d1/1f287b57c0ff0ee5185dff3946d92c8017d39b0e431f0ae79a3ff1859512/scipy-1.18.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7c7a51b33ce387193c97f228320cf8e87361daa1bba750638677729598b3e677", size = 29092110, upload-time = "2026-06-19T15:01:16.908Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1a/7b74eb6c392fdcb27d414c0e7558a6d0231eb3b6d73571f479bb81ea8794/scipy-1.18.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:84031d7b052a54fae2f8632e0ec802073d385476eb9a63079bce6e23ef9283d4", size = 20833811, upload-time = "2026-06-19T15:01:20.488Z" }, + { url = "https://files.pythonhosted.org/packages/7c/ad/f3941716320a7b9cb4d68734a903b45fe16eff5fb7da7e16f2e619304979/scipy-1.18.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:56abf29a7c067dde59be8b9a22d606a4ea1b2f2a4b756d9d903c62818f5dacce", size = 23396644, upload-time = "2026-06-19T15:01:23.364Z" }, + { url = "https://files.pythonhosted.org/packages/22/22/1446b62ffe07f9719b7d9b1b6a4e05a772833ae8f441fe4c22c34c9b250f/scipy-1.18.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ad44305cfa24b1ba5803cbbebf033590ccbac1aa5d612d727b785325ab408b0", size = 34079318, upload-time = "2026-06-19T15:01:26.002Z" }, + { url = "https://files.pythonhosted.org/packages/56/3b/b87da667098bb470fa30c7011b0ba351ee976dd395c78798c66e941665a3/scipy-1.18.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:945c1761b93f38d7f99ae81ae80c63e621471608c7eeead563f6df025585cd58", size = 35324320, upload-time = "2026-06-19T15:01:28.881Z" }, + { url = "https://files.pythonhosted.org/packages/f8/a1/c7932f91909759b0267f75fdea34e91309f96b895757534b76a90b6b4344/scipy-1.18.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1a4441f15d620578772a49e5ab48c0ee1f7a0220e387110283062729136b2553", size = 35699541, upload-time = "2026-06-19T15:01:31.968Z" }, + { url = "https://files.pythonhosted.org/packages/f7/86/5185061a1fcc41d18c5dc2463969b3a3964b31d9ac67b2fb05d4c7ff7670/scipy-1.18.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9aac6192fac56bf2ca534389d24623f07b39ff83317d58287285e7fbd622ff76", size = 37472480, upload-time = "2026-06-19T15:01:35.136Z" }, + { url = "https://files.pythonhosted.org/packages/31/8e/f04c68e39919a010d34f2ee1367fd705b0a25a02f609d755f0bfbc0a15fc/scipy-1.18.0-cp314-cp314t-win_amd64.whl", hash = "sha256:e40baea28ae7f5475c779741e2d90b1247c78531207b49c7030e698ff81cee3f", size = 37365390, upload-time = "2026-06-19T15:01:38.091Z" }, + { url = "https://files.pythonhosted.org/packages/d5/19/969dc072906c84dd0a3b05dcf57ea750936087d7873549e408b35cfc3f97/scipy-1.18.0-cp314-cp314t-win_arm64.whl", hash = "sha256:368e0a705903c466aa5f08eefb39e6b1b6b2d659e7352a31fd9e2438365be0f8", size = 25279661, upload-time = "2026-06-19T15:01:40.817Z" }, +] + +[[package]] +name = "sentry-sdk" +version = "2.66.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7f/6f/d59cad0889d15fde85254cf58e701484de3f3f0406003b3197746910b19b/sentry_sdk-2.66.1.tar.gz", hash = "sha256:f882fb08710c5f8bfc603aafa3e901b384009a19cc3f76a572b863392ee81cdc", size = 940543, upload-time = "2026-07-22T12:26:54.553Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/d3/726bd88f0eece09ddf431bea4c9191c18e7a8d070b854eb0014d447712ee/sentry_sdk-2.66.1-py3-none-any.whl", hash = "sha256:86002793161d9a95ef04bdd8d442e9bfece5d989b755f05d6360215094a7aff6", size = 505555, upload-time = "2026-07-22T12:26:52.71Z" }, +] + +[[package]] +name = "setuptools" +version = "83.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/34/26/f5d29e25ffdb535afef2d35cdb55b325298f96debd670da4c325e08d70f4/setuptools-83.0.0.tar.gz", hash = "sha256:025bccbbf0fa05b6192bc64ae1e7b16e001fd6d6d4d5de03c97b1c1ade523bef", size = 1154254, upload-time = "2026-07-04T15:31:22.699Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/40/e1e72872c6354b306daef1703549e8e83b4d43cfea356311bf722a043752/setuptools-83.0.0-py3-none-any.whl", hash = "sha256:29b23c360f22f414dc7336bb39178cc7bcbf6021ed2733cde173f09dba19abb3", size = 1008090, upload-time = "2026-07-04T15:31:20.885Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "torch" +version = "2.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-bindings", marker = "python_full_version < '3.15' and sys_platform == 'linux'" }, + { name = "cuda-toolkit", extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "sys_platform == 'linux'" }, + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "nvidia-cudnn-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparselt-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvshmem-cu13", marker = "sys_platform == 'linux'" }, + { name = "setuptools" }, + { name = "sympy" }, + { name = "triton", marker = "python_full_version < '3.15' and sys_platform == 'linux'" }, + { name = "typing-extensions" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/e7/19894fdb51c7dbaf94f5a79bb0871da0992e8e4241e579cb006da46d2e58/torch-2.13.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:94f0de129916f77b8dc2c7a8eff644cfeddfe59e39c9f55e9f6e17543410281d", size = 111178962, upload-time = "2026-07-08T16:05:49.855Z" }, + { url = "https://files.pythonhosted.org/packages/d1/5c/b1d5de470c54e339b30a92d96683a71bcebd78f5f2a7fc714cd6dc6bbd68/torch-2.13.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:0ab4b69f3ee03a62a002cfbf77b1ca5e88aceb4ea64cb4388bb28f638ddbb045", size = 427198333, upload-time = "2026-07-08T16:05:36.847Z" }, + { url = "https://files.pythonhosted.org/packages/50/c0/68a84105e1fcb8970144b388ff3d3e5dc15a3be28c1e247841f7d7247e41/torch-2.13.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c78b7b4d04461855a764cf01bae9a462bb88bc93defcfa11235cbc8fdf3e12c4", size = 526555154, upload-time = "2026-07-08T16:05:06.507Z" }, + { url = "https://files.pythonhosted.org/packages/2e/c9/0bb9d097b03cbaf96bb75b15e867347b8e41bfcdfe0539452d17d9e63993/torch-2.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:2bd30b6b730d987fa386ce3898933762c5cb8cc82eb0535211d787cc3ce2dfeb", size = 122015602, upload-time = "2026-07-08T16:05:45.25Z" }, + { url = "https://files.pythonhosted.org/packages/5b/fe/cba54dc58523434919b66f13a667e36e436deddd77ca519e96553617d4ec/torch-2.13.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:e76f9bcecc52b8ff711239a2f7547d5353df95878ab232f0773c1d95928b92f8", size = 111187938, upload-time = "2026-07-08T16:05:17.065Z" }, + { url = "https://files.pythonhosted.org/packages/c2/59/1e3160e18e12aa3038390efab3ce02b36a9d4d6a527ecdd8520dca2e68d8/torch-2.13.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:092790c696a760c729fd5722835f50b9d81fd7c8f141571f3f3cf4081a8f664c", size = 427199369, upload-time = "2026-07-08T16:04:51.054Z" }, + { url = "https://files.pythonhosted.org/packages/01/79/1f2d34ad7034ee1c7ffc1cf8bf0f8213af2a81df6ecdb3997ecec107c09d/torch-2.13.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:60fcdcb2f3876e21146cb4524ef06397d727ca9ad5f020818547e25075fe3cb7", size = 526574961, upload-time = "2026-07-08T16:04:07.075Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fd/0f2ce40f58aefbdb3392f9acce3c8171940943ae2d661f70558bfa73befb/torch-2.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:a0d8b11f16a48d60e2015d8213aa0390744cbebb98e58b62b3514dddc656e330", size = 122015870, upload-time = "2026-07-08T16:05:27.59Z" }, + { url = "https://files.pythonhosted.org/packages/c4/3a/ed0f4d4d1dcde03bced7aac9a28e800abcdc0cbd06b6775044c9fbd877b7/torch-2.13.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2fe228aba290d14b9f31b049be550dbd469c3fd3013d7a19705b30454da97027", size = 111213045, upload-time = "2026-07-08T16:05:22.997Z" }, + { url = "https://files.pythonhosted.org/packages/df/a9/f6a2a4d763ff1df02e9a64c477029db614295bc9367f4131223791ccc243/torch-2.13.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:572df8be8ffb4599c88cbd6a0726f1f854f4da65d2e3c09f0e2c2283333cd6d4", size = 427210998, upload-time = "2026-07-08T16:04:37.708Z" }, + { url = "https://files.pythonhosted.org/packages/f3/82/fea946351658e6534db52d2cc12bc53087cbf87f9440c5f180f367c1950b/torch-2.13.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:796633c4cdf0fe2cdced72d8f88f22e73dbcfce83132763162f6d4bff13b820b", size = 526605292, upload-time = "2026-07-08T16:04:22.81Z" }, + { url = "https://files.pythonhosted.org/packages/21/d6/e8f3c6f7e01f626f77259de9860d2a78bc84c40539e28e79b7e98b0bb659/torch-2.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:024c6cc0c1b085f2f91f20a3dc27b0471d021c31ce84b81be3afdc39f791fd9d", size = 122057313, upload-time = "2026-07-08T16:03:53.43Z" }, + { url = "https://files.pythonhosted.org/packages/0d/fa/c1c10b7aff4a9a3e8956d4f0a5f468fa6db7abc3208805719076772b4833/torch-2.13.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:33449899ce5496c1b84b4853179d94fd102028ae1407314d9fb956bb79e70d09", size = 111213743, upload-time = "2026-07-08T16:03:28.579Z" }, + { url = "https://files.pythonhosted.org/packages/11/18/9ecb37b56293a0be8d80f810bf672a72fe7e02f8b475d5ef1b9bf8a0d748/torch-2.13.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:1e09d6a722504957c694faceca843acde562786df1144ebcc5a74075ec7f6005", size = 427213008, upload-time = "2026-07-08T16:03:44.106Z" }, + { url = "https://files.pythonhosted.org/packages/d4/5a/7c50ba1b7b713d71d34669c6d13dab0a11531a3eceb0307a5162dbfec0f7/torch-2.13.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:a3a9a21312872af8a26950b2c15680335a386a1f56ed03e780653d78b9607e9e", size = 526602329, upload-time = "2026-07-08T16:03:12.649Z" }, + { url = "https://files.pythonhosted.org/packages/91/3d/e7adcc6aaf36961cd18f56cf8ad0f3058c3a5c84ccf391762176c94581b8/torch-2.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:49b58f1e2c52440abb6f17c28f0335fe6c6d01ad1a7f55b0183b81e4b34d64e6", size = 122057920, upload-time = "2026-07-08T16:03:01.808Z" }, + { url = "https://files.pythonhosted.org/packages/36/76/6dcc7f0c07052102dd36f83cbc5800842a909c8c3fbf1a7f8a5844954de9/torch-2.13.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:d849b390e07d8d333ce8ecaf91b273c656c598379a19c9acf1318a883f6b391c", size = 111227066, upload-time = "2026-07-08T16:03:33.6Z" }, + { url = "https://files.pythonhosted.org/packages/e9/09/2c10e8cd0e00fa5d23c052df6ce467eaa7182399f5e0f824f1e4ff42ccae/torch-2.13.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:a3893dc2da0a972a8ca5d698c85a9f967559ac5f8ee1797b77408aa8734d073c", size = 427226309, upload-time = "2026-07-08T16:02:53.127Z" }, + { url = "https://files.pythonhosted.org/packages/76/c6/22c2102bbef14ca6a6cb4c20e42f088e49c5f812be4e160ae57502e325f9/torch-2.13.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:49f1ea385c754e54919408a9bb3b5a72b0b755bbe2c916c1d6f70afbec4908a2", size = 526614507, upload-time = "2026-07-08T16:02:16.441Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0c/7d1deb6bce5bc3e6042caf39100ac768eba3b9a098e1dddd16f75bd6489b/torch-2.13.0-cp314-cp314-win_amd64.whl", hash = "sha256:4f8573e3ce9ebcd53fe922f01077a6085ccdfbe5f12fd215883a9d87d7a744fd", size = 122051871, upload-time = "2026-07-08T16:03:23.521Z" }, + { url = "https://files.pythonhosted.org/packages/f4/ce/aa8b7f9949d32e0f2f624f342bc3b48112c1b8a130288465938bc83bcbf9/torch-2.13.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:c28def70706c2f9ecc752574766e8ae4da9b810ab6676b611166761a78a9f1e1", size = 111537025, upload-time = "2026-07-08T16:02:44.28Z" }, + { url = "https://files.pythonhosted.org/packages/69/d1/491e3a0389430946145888b0203f2b6a759ce2a61481b96a85c2da4f2ced/torch-2.13.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:31061ff56ed8fbf26c749806905aeb749ebeb819810fd5d52508aa5afd90dddc", size = 427219769, upload-time = "2026-07-08T16:02:31.18Z" }, + { url = "https://files.pythonhosted.org/packages/9a/1d/38006e045bf0a1fc28ef01e757c554e59e59a8770c284bc4f47b14e60441/torch-2.13.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:cc26eead4cf51d0b544e31e364dcf000846549c273bd148936fe9d24d29acb92", size = 526571320, upload-time = "2026-07-08T16:01:59.348Z" }, + { url = "https://files.pythonhosted.org/packages/56/94/655c91992a882bd5071aa0b5d22a07dbb130d801e872be97c0b627a7c693/torch-2.13.0-cp314-cp314t-win_amd64.whl", hash = "sha256:a7de8a313090dc5c7d7ba4bfe5c3be222528f9a4dba1acc83bddb1157360c4b8", size = 122306773, upload-time = "2026-07-08T16:02:39.832Z" }, +] + +[[package]] +name = "triton" +version = "3.7.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/ea/629cc37436ca5df93ce98956d09cd2ca1498bfee8ef4972d2fe48b9f958c/triton-3.7.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3daf64305d6cea88d3334c65ebc9bcd0c64c9564a977084366aa768d57cbcf64", size = 184551013, upload-time = "2026-06-17T20:03:37.551Z" }, + { url = "https://files.pythonhosted.org/packages/15/76/c79c34311625227a288df3e483fc5cdf3d596624cbd4b4758c4cbdc14af3/triton-3.7.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee89fbf782ec2ad50391dd1cf26cbea4f4467154c37f4773026da8fc31c0f58e", size = 197596267, upload-time = "2026-06-17T19:53:06.898Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f9/19d842d06a08559534fa1eaab6ca551b1bcf40f06620bddec1babaa2772d/triton-3.7.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4a0e1cd4c4a76370ed74a8432a53cea28716827d19e40ffc732233e35ceb3f6", size = 184664887, upload-time = "2026-06-17T20:03:42.913Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5e/fce69606f7f240297f163e25539906732b199530d486ce67ae319877e821/triton-3.7.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6744957e9fd610a29680ec2346057d0c86948ed3812468670719f391e94b44a5", size = 197701306, upload-time = "2026-06-17T19:53:13.673Z" }, + { url = "https://files.pythonhosted.org/packages/94/fa/f856e24deb462d5f18bd4b5a746957862ab9b6ee5834bda60605ec348366/triton-3.7.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9497f2e696ee368862a181a90b2dcc03ca978cc4f602abd67c7d81022a6988e1", size = 184692359, upload-time = "2026-06-17T20:03:48.288Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6f/fb96d15db6f36d6eae4cafb998c2e0353bf59d7c4ea1662d7497f269134a/triton-3.7.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e40869937a68206ec70d7f25bb7ec6433cb083f9135e1f36dbd318dc449a728", size = 197719725, upload-time = "2026-06-17T19:53:20.419Z" }, + { url = "https://files.pythonhosted.org/packages/00/42/c5089d4d9327fcd1e862c599cc2927f39418f84dd11a84cb2ccff9d4787a/triton-3.7.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cdbfc09d9ec58bc5e68321525653220de7515c199e7a8097a97c85e62b52cd0a", size = 184694629, upload-time = "2026-06-17T20:03:53.444Z" }, + { url = "https://files.pythonhosted.org/packages/07/42/2c3ac59253ae8892b6f307875263dd23dc875cdf732d3aea40d6d41fb7cb/triton-3.7.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:58c0e131da05134a2a4788ccbcc0c1105cf0f54c8e98f19e34cd465396dc15eb", size = 197729241, upload-time = "2026-06-17T19:53:27.801Z" }, + { url = "https://files.pythonhosted.org/packages/40/71/e01aa7ad573883ed9456f130226babdec70b005e098c4d6226a6238e761b/triton-3.7.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe4ea396a06171f1f1f58cbd39c70b09294398f7dd7c620939bab54ad6f934fa", size = 184705764, upload-time = "2026-06-17T20:03:59.064Z" }, + { url = "https://files.pythonhosted.org/packages/a4/09/5683146fda6a2b569deb78ccfd8fbfea8bfe55f726b081c0a6bb18dd6f28/triton-3.7.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2020153b08280415ec0da6607834e79166442147e78e144df06b508c75b186d2", size = 197729537, upload-time = "2026-06-17T19:53:35.516Z" }, + { url = "https://files.pythonhosted.org/packages/e9/f8/448220c3092019f9fdfab39ec47985968181d67da34b44f6a7f6280a5cbb/triton-3.7.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c58e4c61f0c73b5dba3b5d19b4a7093c32f90dc18b2a7f121a7c16ccd31107b7", size = 184814760, upload-time = "2026-06-17T20:04:04.984Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ac/229b7d4589d2e5937310e72c6d46e89599d16a4a12b479ffa1499fee8eb8/triton-3.7.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10ba85fa2cca4a2fbdeb36bf1cb082f2c252bda55bf9fccd74f65ec5bc647e68", size = 197824404, upload-time = "2026-06-17T19:53:42.772Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "wandb" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "packaging" }, + { name = "platformdirs" }, + { name = "protobuf" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "sentry-sdk" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/92/fb/8d3f96a8b143060d6fa145462d0785981373e04694e4152555ccb5d23939/wandb-0.28.1.tar.gz", hash = "sha256:870ccb1a01238b0ac07c6fd96a0810a1f79090aba04ea29f4ee012ac8327705d", size = 40578119, upload-time = "2026-07-16T18:47:05.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/21/8df50164d07623cfcefec19bbf9327d9be84b637a827cea1f0c06db005fd/wandb-0.28.1-py3-none-macosx_12_0_arm64.whl", hash = "sha256:da909a76e65c64c0d93acc485d2a19f66e336f1e3f725f1c98a070883e084943", size = 24277925, upload-time = "2026-07-16T18:46:42.383Z" }, + { url = "https://files.pythonhosted.org/packages/8f/18/6c3da7e6cb215ad363324db8dc4d83b93626f5e339822b05b1c38a6097fd/wandb-0.28.1-py3-none-macosx_12_0_x86_64.whl", hash = "sha256:3da3db219c54bfd1082c00e9061c8ea894ba43e42733b5af00bb10c09d7158fe", size = 25480852, upload-time = "2026-07-16T18:46:45.102Z" }, + { url = "https://files.pythonhosted.org/packages/e2/1a/d15bcfb4417fa69edcaa33db8ea012db733da1057e193b047e3f69fdd671/wandb-0.28.1-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:ae9ae6fb29e2e2b1d097ed8b75c0c0240c778c2a8cad1d996dee870a1e401c2c", size = 24832138, upload-time = "2026-07-16T18:46:47.433Z" }, + { url = "https://files.pythonhosted.org/packages/b3/da/49924c7df2952dfd82c86c3779c339c0c3d6f6439387c03d97d0470c3658/wandb-0.28.1-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:8cfb898b6a6c884d9c9294b02764e88bce65049f027a124d6bee53fe722469b6", size = 26486533, upload-time = "2026-07-16T18:46:49.839Z" }, + { url = "https://files.pythonhosted.org/packages/11/c0/06b23518e29690784f1b3081e39c7679ca076cb0af094cb9b4bb309150f5/wandb-0.28.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:cf2b1533945395e4fdbe6182b272bb0ca8a02c10b3086a395e2d57686ae3ed0d", size = 25022635, upload-time = "2026-07-16T18:46:52.376Z" }, + { url = "https://files.pythonhosted.org/packages/23/30/6de2f7995a8a6eecbd03d24c79a139a734c0168f5520cf4c7ccb43c1dbbc/wandb-0.28.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7233061080507a4b4098bed1ccb381ce6f890c60397cd4153d060285bcb267bd", size = 27008895, upload-time = "2026-07-16T18:46:55.025Z" }, + { url = "https://files.pythonhosted.org/packages/b2/83/49deab9447687625371435ca21b6da82f223f1c7d014d77386b9cb91833c/wandb-0.28.1-py3-none-win32.whl", hash = "sha256:4bc461cda3ce23a19d8df5e42981a664d95fa3231efb10fd1e85d9d4824c7d29", size = 24418398, upload-time = "2026-07-16T18:46:57.43Z" }, + { url = "https://files.pythonhosted.org/packages/bf/6f/ed6616b11ea15b8ceabedcaa567286c1c9ec65fa50563230a90bfb627cc5/wandb-0.28.1-py3-none-win_amd64.whl", hash = "sha256:d98a10370162b1e970850237114c56e9c4c58f3cb701e4b8cb38f36f6749fd52", size = 24418404, upload-time = "2026-07-16T18:47:00.427Z" }, + { url = "https://files.pythonhosted.org/packages/07/78/75b6827a6665337a715c5347c5edbd84eca660f7a0f48d8d6d24d1f66bee/wandb-0.28.1-py3-none-win_arm64.whl", hash = "sha256:4aa07f13dd3bcac2c0524c8d0f49f76e83ab5c1054fd09f3b1a436cfcde146a6", size = 22299006, upload-time = "2026-07-16T18:47:02.71Z" }, +] From 083b988142daf40a0bcdc88bf7a8e14af1ec446e Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Tue, 28 Jul 2026 18:22:32 -0700 Subject: [PATCH 03/20] Log a few more informative stats. --- ocean/electric_fish/binding.c | 3 +++ ocean/electric_fish/electric_fish.h | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/ocean/electric_fish/binding.c b/ocean/electric_fish/binding.c index 8b7a7fa38c..dccca01e0b 100644 --- a/ocean/electric_fish/binding.c +++ b/ocean/electric_fish/binding.c @@ -31,4 +31,7 @@ void my_log(Log* log, Dict* out) { dict_set(out, "score", log->score); dict_set(out, "episode_return", log->episode_return); dict_set(out, "episode_length", log->episode_length); + dict_set(out, "food_eaten_mean", log->food_eaten_mean); + dict_set(out, "eod_rate", log->eod_rate); + dict_set(out, "collisions_fish", log->collisions_fish); } diff --git a/ocean/electric_fish/electric_fish.h b/ocean/electric_fish/electric_fish.h index d2f00b6a12..ebc43bcaf6 100644 --- a/ocean/electric_fish/electric_fish.h +++ b/ocean/electric_fish/electric_fish.h @@ -575,6 +575,9 @@ typedef struct Log { float score; float episode_return; float episode_length; + float food_eaten_mean; + float eod_rate; + float collisions_fish; float n; } Log; @@ -646,6 +649,8 @@ typedef struct FishEnv { FishFood food[FISH_MAX_FOOD]; int num_food; int food_eaten; + int eod_agent_steps; + int collisions_fish; float episode_return; FishMonopole eod_sources[2 * MAX_AGENTS]; @@ -1039,6 +1044,8 @@ void c_reset(FishEnv* env) { } env->tick = 0; env->food_eaten = 0; + env->eod_agent_steps = 0; + env->collisions_fish = 0; env->episode_return = 0.0f; for (int i = 0; i < env->num_agents; i++) { @@ -1213,6 +1220,12 @@ void add_log(FishEnv* env) { env->log.episode_return += env->episode_return; env->log.score += (float)env->food_eaten; env->log.perf += (float)env->food_eaten / (float)env->num_food; + env->log.food_eaten_mean += + (float)env->food_eaten / (float)env->num_agents; + env->log.eod_rate += + (float)env->eod_agent_steps / + (float)(env->tick * env->num_agents); + env->log.collisions_fish += (float)env->collisions_fish; env->log.n += 1.0f; } @@ -1280,6 +1293,7 @@ void c_step(FishEnv* env) { agent->last_action[1] = (float)turn; agent->last_action[2] = agent->emits_eod ? 1.0f : 0.0f; agent->last_action[3] = agent->bite_action ? 1.0f : 0.0f; + env->eod_agent_steps += agent->emits_eod ? 1 : 0; if (!agent->bite_action && agent->eat_cooldown <= 0.0) { if (try_eat(env, i)) { @@ -1300,6 +1314,7 @@ void c_step(FishEnv* env) { bool hit_wall = fish_commit_motion( &agent->movement, proposal, collided, env->arena_size_cm ); + env->collisions_fish += collided ? 1 : 0; if (collided || hit_wall) { env->rewards[i] += FISH_COLLISION_REWARD; } From 3310c83c5754df18af5fbd87063c5a6b725e3c4e Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Thu, 30 Jul 2026 12:09:44 -0400 Subject: [PATCH 04/20] Remove fish prefixes. --- config/electric_fish.ini | 151 ++++++++ ocean/electric_fish/binding.c | 2 +- ocean/electric_fish/electric_fish.c | 22 +- ocean/electric_fish/electric_fish.h | 525 ++++++++++++++-------------- 4 files changed, 425 insertions(+), 275 deletions(-) diff --git a/config/electric_fish.ini b/config/electric_fish.ini index 429a68f0ec..35e53cefa4 100644 --- a/config/electric_fish.ini +++ b/config/electric_fish.ini @@ -10,6 +10,9 @@ num_threads = 8 num_layers = 1 hidden_size = 128 +[train] +total_timesteps = 50_000_000 + [env] num_agents = 4 # Set min=max for evaluation; use 40 and 300 for paper-style training. @@ -28,3 +31,151 @@ patch_density = 0.001 placement_radius_frac = 0.75 electric_field_radius = 15 max_steps = 4096 + + +[sweep] +method = Protein +metric = score +metric_distribution = linear +goal = maximize + +; [sweep.train.total_timesteps] +; distribution = log_normal +; min = 3e7 +; max = 1e11 +; scale = time + +[sweep.policy.hidden_size] +distribution = uniform_pow2 +min = 32 +max = 1024 +scale = auto + +[sweep.policy.num_layers] +distribution = uniform +min = 1 +max = 8 +scale = auto + +#[sweep.vec.total_agents] +#distribution = uniform_pow2 +#min = 256 +#max = 16384 +#scale = auto + +[sweep.vec.num_buffers] +distribution = uniform +min = 1 +max = 8 +scale = auto + +[sweep.train.horizon] +distribution = uniform_pow2 +min = 8 +max = 1024 +scale = auto + +#[sweep.train.minibatch_size] +#distribution = uniform_pow2 +#min = 4096 +#max = 65536 +#scale = auto + +[sweep.train.learning_rate] +distribution = log_normal +min = 0.00001 +max = 0.1 +scale = 0.5 + +[sweep.train.ent_coef] +distribution = log_normal +min = 0.00001 +max = 0.2 +scale = auto + +[sweep.train.gamma] +distribution = logit_normal +min = 0.8 +max = 0.9999 +scale = auto + +[sweep.train.gae_lambda] +distribution = logit_normal +min = 0.2 +max = 0.995 +scale = auto + +[sweep.train.vtrace_rho_clip] +distribution = uniform +min = 0.1 +max = 5.0 +scale = auto + +[sweep.train.vtrace_c_clip] +distribution = uniform +min = 0.1 +max = 5.0 +scale = auto + +[sweep.train.replay_ratio] +distribution = uniform +min = 0.25 +max = 4.0 +scale = auto + +[sweep.train.clip_coef] +distribution = uniform +# Lower clip is sometimes better but less stable +min = 0.01 +max = 1.0 +scale = auto + +# Optimal vf clip can be lower than 0.1, +# but this results in jank unstable runs +[sweep.train.vf_clip_coef] +distribution = uniform +min = 0.01 +max = 5.0 +scale = auto + +[sweep.train.vf_coef] +distribution = uniform +min = 0.1 +max = 5.0 +scale = auto + +[sweep.train.max_grad_norm] +distribution = uniform +min = 0.1 +max = 5.0 +scale = auto + +[sweep.train.beta1] +distribution = logit_normal +min = 0.5 +max = 0.999 +scale = auto + +[sweep.train.beta2] +distribution = logit_normal +min = 0.9 +max = 0.99999 +scale = auto + +[sweep.train.eps] +distribution = log_normal +min = 1e-14 +max = 1e-4 +scale = auto + +[sweep.train.prio_alpha] +distribution = uniform +min = 0.0 +max = 1.0 +scale = auto + +[sweep.train.prio_beta0] +distribution = uniform +min = 0.0 +max = 1.0 +scale = auto diff --git a/ocean/electric_fish/binding.c b/ocean/electric_fish/binding.c index dccca01e0b..5a74754f66 100644 --- a/ocean/electric_fish/binding.c +++ b/ocean/electric_fish/binding.c @@ -1,6 +1,6 @@ #include "electric_fish.h" -#define NUM_ATNS FISH_ACTION_SIZE +#define NUM_ATNS ACTION_SIZE #define ACT_SIZES {1, 1, 1, 1} #define OBS_TENSOR_T FloatTensor diff --git a/ocean/electric_fish/electric_fish.c b/ocean/electric_fish/electric_fish.c index 51d31a46d2..34960bba7b 100644 --- a/ocean/electric_fish/electric_fish.c +++ b/ocean/electric_fish/electric_fish.c @@ -31,22 +31,22 @@ static void print_physics_fixture(FishEnv* env) { build_electric_scene(env); FishVec2 query = {35.0, 30.0}; - FishVec2 eod = fish_measure_electric_field_with_reflections( + FishVec2 eod = measure_electric_field_with_reflections( query, env->eod_sources, 4, NULL, 0, - env->arena_size_cm, FISH_FIELD_EPS_M, - FISH_REFLECTION_SCALE, false + env->arena_size_cm, FIELD_EPS_M, + REFLECTION_SCALE, false ); - FishVec2 intrinsic = fish_measure_electric_field_with_reflections( + FishVec2 intrinsic = measure_electric_field_with_reflections( query, NULL, 0, env->intrinsic_sources, (size_t)env->num_intrinsic_sources, - env->arena_size_cm, FISH_FIELD_EPS_M, - FISH_REFLECTION_SCALE, false + env->arena_size_cm, FIELD_EPS_M, + REFLECTION_SCALE, false ); - FishVec2 induced = fish_measure_electric_field_with_reflections( + FishVec2 induced = measure_electric_field_with_reflections( query, NULL, 0, env->induced_sources, (size_t)env->num_induced_sources, - env->arena_size_cm, FISH_FIELD_EPS_M, - FISH_REFLECTION_SCALE, false + env->arena_size_cm, FIELD_EPS_M, + REFLECTION_SCALE, false ); printf( "{\"eod\":[%.17g,%.17g],\"intrinsic\":[%.17g,%.17g]," @@ -80,7 +80,7 @@ int main(int argc, char** argv) { } unsigned int demo_rng = env.rng ^ 0x9e3779b9U; - float target_actions[MAX_AGENTS][FISH_ACTION_SIZE] = {{0}}; + float target_actions[MAX_AGENTS][ACTION_SIZE] = {{0}}; bool headless = argc > 1 && strcmp(argv[1], "--headless") == 0; if (!headless) c_render(&env); @@ -99,7 +99,7 @@ int main(int argc, char** argv) { /* Smooth random walk commands; EOD remains a discrete pulse action. */ for (int i = 0; i < env.num_agents; i++) { - float* action = env.actions + i * FISH_ACTION_SIZE; + float* action = env.actions + i * ACTION_SIZE; action[0] += 0.06f * (target_actions[i][0] - action[0]); action[1] += 0.08f * (target_actions[i][1] - action[1]); action[2] = target_actions[i][2]; diff --git a/ocean/electric_fish/electric_fish.h b/ocean/electric_fish/electric_fish.h index ebc43bcaf6..750a6733a3 100644 --- a/ocean/electric_fish/electric_fish.h +++ b/ocean/electric_fish/electric_fish.h @@ -23,46 +23,45 @@ #include "raylib.h" // Constants -#define FISH_PI 3.14159265358979323846264338327950288 -#define FISH_CM_TO_M 0.01 -#define FISH_K_COULOMB 8.99e9 -#define FISH_EPSILON_0 8.854e-12 -#define FISH_FIELD_EPS_M 1e-5 -#define FISH_REFLECTION_SCALE 1.0 -#define FISH_SENSOR_EPS 1e-25 +#define CM_TO_M 0.01 +#define K_COULOMB 8.99e9 +#define EPSILON_0 8.854e-12 +#define FIELD_EPS_M 1e-5 +#define REFLECTION_SCALE 1.0 +#define SENSOR_EPS 1e-25 // Values from upstream cfg.py and Table 1 of the accompanying publication -#define FISH_SIMULATION_HZ 83.0 -#define FISH_BODY_RADIUS_CM 1.0 -#define FISH_FOOD_RADIUS_CM 0.25 -#define FISH_CONDUCTOR_CONTRAST (-0.5) -#define FISH_EOD_CHARGE_C 1.11e-15 -#define FISH_EOD_POLE_OFFSET_CM 0.5 -#define FISH_INTRINSIC_MOMENT_C_M 1.11e-23 -#define FISH_FOOD_INTRINSIC_MOMENT_C_M 1.11e-24 - -#define FISH_NUM_MORMYROMASTS 36 -#define FISH_NUM_AMPULLARY 24 -#define FISH_NUM_KNOLLEN 12 +#define SIMULATION_HZ 83.0 +#define BODY_RADIUS_CM 1.0 +#define FOOD_RADIUS_CM 0.25 +#define CONDUCTOR_CONTRAST -0.5 +#define EOD_CHARGE_C 1.11e-15 +#define EOD_POLE_OFFSET_CM 0.5 +#define INTRINSIC_MOMENT_C_M 1.11e-23 +#define FOOD_INTRINSIC_MOMENT_C_M 1.11e-24 + +#define NUM_MORMYROMASTS 36 +#define NUM_AMPULLARY 24 +#define NUM_KNOLLEN 12 #define MAX_AGENTS 4 -#define FISH_MAX_FOOD 64 -#define FISH_MAX_DIPOLE_SOURCES (2 * MAX_AGENTS + 2 * FISH_MAX_FOOD) +#define MAX_FOOD 64 +#define MAX_DIPOLE_SOURCES (2 * MAX_AGENTS + 2 * MAX_FOOD) #define OBS_SIZE 110 -#define FISH_ACTION_SIZE 4 -#define FISH_EATING_RADIUS_CM 2.0 -#define FISH_BITING_RADIUS_CM 3.0 -#define FISH_EATING_ANGLE (FISH_PI / 4.0) -#define FISH_EAT_REWARD 10.0f -#define FISH_COLLISION_REWARD -0.5f -#define FISH_BITTEN_REWARD -5.0f +#define ACTION_SIZE 4 +#define EATING_RADIUS_CM 2.0 +#define BITING_RADIUS_CM 3.0 +#define EATING_ANGLE (PI / 4.0) +#define EAT_REWARD 10.0f +#define COLLISION_REWARD -0.5f +#define BITTEN_REWARD -5.0f #define MAX_PATCHES 90 #define TRACE_LENGTH 128 -#define FISH_AMPULLARY_MIN_VM 2e-10 -#define FISH_AMPULLARY_MAX_VM 2e-8 -#define FISH_MORMYROMAST_MIN_VM 5e-8 -#define FISH_MORMYROMAST_MAX_VM 5e-2 -#define FISH_KNOLLEN_MIN_VM 2e-7 +#define AMPULLARY_MIN_VM 2e-10 +#define AMPULLARY_MAX_VM 2e-8 +#define MORMYROMAST_MIN_VM 5e-8 +#define MORMYROMAST_MAX_VM 5e-2 +#define KNOLLEN_MIN_VM 2e-7 typedef struct FishVec2 { double x; @@ -85,15 +84,15 @@ typedef struct FishSensor { } FishSensor; typedef enum FishMotionOrder { - FISH_MOTION_FIRST_ORDER = 1, - FISH_MOTION_SECOND_ORDER = 2, + MOTION_FIRST_ORDER = 1, + MOTION_SECOND_ORDER = 2, } FishMotionOrder; typedef enum FishWall { - FISH_WALL_LEFT = 0, - FISH_WALL_RIGHT = 1, - FISH_WALL_BOTTOM = 2, - FISH_WALL_TOP = 3, + WALL_LEFT = 0, + WALL_RIGHT = 1, + WALL_BOTTOM = 2, + WALL_TOP = 3, } FishWall; typedef struct FishMovement { @@ -133,45 +132,45 @@ typedef struct FishFoodMotion { double orientation; } FishFoodMotion; -static inline double fish_vec_length_squared(FishVec2 v) { +static inline double vec_length_squared(FishVec2 v) { return v.x * v.x + v.y * v.y; } -static inline double fish_vec_length(FishVec2 v) { - return sqrt(fish_vec_length_squared(v)); +static inline double vec_length(FishVec2 v) { + return sqrt(vec_length_squared(v)); } -static inline double fish_clamp(double value, double minimum, double maximum) { +static inline double clamp(double value, double minimum, double maximum) { return fmin(maximum, fmax(minimum, value)); } /* Stable wrap to [-pi, pi], identical to movement._wrap_angle. */ -static inline double fish_wrap_angle(double angle) { +static inline double wrap_angle(double angle) { return atan2(sin(angle), cos(angle)); } /* Rotate a vector; add translation separately when transforming a position. */ -static inline FishVec2 fish_rotate(FishVec2 v, double angle) { +static inline FishVec2 rotate(FishVec2 v, double angle) { double c = cos(angle); double s = sin(angle); return (FishVec2){c * v.x - s * v.y, s * v.x + c * v.y}; } -static inline FishVec2 fish_transform_position(FishVec2 local_cm, FishVec2 origin_cm, double angle) { - FishVec2 rotated = fish_rotate(local_cm, angle); +static inline FishVec2 transform_position(FishVec2 local_cm, FishVec2 origin_cm, double angle) { + FishVec2 rotated = rotate(local_cm, angle); return (FishVec2){rotated.x + origin_cm.x, rotated.y + origin_cm.y}; } -static inline FishSensor fish_transform_sensor(FishSensor local, FishVec2 origin_cm, double angle) { +static inline FishSensor transform_sensor(FishSensor local, FishVec2 origin_cm, double angle) { FishSensor world = { - .position_cm = fish_transform_position(local.position_cm, origin_cm, angle), - .normal = fish_rotate(local.normal, angle), + .position_cm = transform_position(local.position_cm, origin_cm, angle), + .normal = rotate(local.normal, angle), }; return world; } // Biophysics and dynamics -static inline FishMotionProposal fish_propose_motion( +static inline FishMotionProposal propose_motion( const FishMovement* fish, double move_command, double turn_command, @@ -184,7 +183,7 @@ static inline FishMotionProposal fish_propose_motion( .angular_velocity = 0.0, }; - if (fish->motion_order == FISH_MOTION_FIRST_ORDER) { + if (fish->motion_order == MOTION_FIRST_ORDER) { if (eating_frozen) { move_command = 0.0; turn_command = 0.0; @@ -197,7 +196,7 @@ static inline FishMotionProposal fish_propose_motion( proposal.angular_velocity = fish->angular_velocity + turn_command * fish->max_angular_acceleration; - proposal.linear_velocity = fish_clamp( + proposal.linear_velocity = clamp( proposal.linear_velocity, fish->min_linear_velocity, fish->max_linear_velocity @@ -208,7 +207,7 @@ static inline FishMotionProposal fish_propose_motion( proposal.linear_velocity *= fish->linear_drag_factor; proposal.angular_velocity *= fish->angular_drag_factor; - proposal.angular_velocity = fish_clamp( + proposal.angular_velocity = clamp( proposal.angular_velocity, fish->min_angular_velocity, fish->max_angular_velocity @@ -221,7 +220,7 @@ static inline FishMotionProposal fish_propose_motion( } proposal.orientation = - fish_wrap_angle(fish->orientation + proposal.angular_velocity); + wrap_angle(fish->orientation + proposal.angular_velocity); FishVec2 heading = { cos(proposal.orientation), sin(proposal.orientation) @@ -233,7 +232,7 @@ static inline FishMotionProposal fish_propose_motion( return proposal; } -static inline bool fish_motion_collides( +static inline bool motion_collides( FishVec2 proposed_position_cm, double body_radius_cm, const FishMovement* others, @@ -249,7 +248,7 @@ static inline bool fish_motion_collides( proposed_position_cm.x - others[i].position_cm.x, proposed_position_cm.y - others[i].position_cm.y, }; - if (fish_vec_length_squared(delta) < radius * radius) { + if (vec_length_squared(delta) < radius * radius) { return true; } } @@ -260,7 +259,7 @@ static inline bool fish_motion_collides( * Commit a proposal and enforce a rectangular arena. Orientation always * changes even when translation is blocked, allowing turning in place. */ -static inline bool fish_commit_motion( +static inline bool commit_motion( FishMovement* fish, FishMotionProposal proposal, bool collided, @@ -276,12 +275,12 @@ static inline bool fish_commit_motion( } FishVec2 unclipped = fish->position_cm; - fish->position_cm.x = fish_clamp( + fish->position_cm.x = clamp( fish->position_cm.x, fish->body_radius_cm, arena_size_cm.x - fish->body_radius_cm ); - fish->position_cm.y = fish_clamp( + fish->position_cm.y = clamp( fish->position_cm.y, fish->body_radius_cm, arena_size_cm.y - fish->body_radius_cm @@ -289,7 +288,7 @@ static inline bool fish_commit_motion( bool hit_wall = fish->position_cm.x != unclipped.x || fish->position_cm.y != unclipped.y; bool stopped = collided || hit_wall; - if (fish->motion_order == FISH_MOTION_SECOND_ORDER) { + if (fish->motion_order == MOTION_SECOND_ORDER) { fish->linear_velocity = stopped ? 0.0 : proposal.linear_velocity; fish->angular_velocity = stopped ? 0.0 : proposal.angular_velocity; } @@ -300,38 +299,38 @@ static inline bool fish_commit_motion( fish->position_cm.y - previous_position.y, }; fish->displacement_ego_cm = - fish_rotate(fish->displacement_ground_cm, -previous_orientation); + rotate(fish->displacement_ground_cm, -previous_orientation); return hit_wall; } -static inline bool fish_point_in_forward_cone( - FishVec2 fish_position_cm, - double fish_orientation, +static inline bool point_in_forward_cone( + FishVec2 position_cm, + double orientation, FishVec2 target_position_cm, double radius_cm, double cone_angle ) { FishVec2 offset = { - target_position_cm.x - fish_position_cm.x, - target_position_cm.y - fish_position_cm.y, + target_position_cm.x - position_cm.x, + target_position_cm.y - position_cm.y, }; - if (fish_vec_length_squared(offset) >= radius_cm * radius_cm) { + if (vec_length_squared(offset) >= radius_cm * radius_cm) { return false; } double bearing = atan2(offset.y, offset.x); - return fabs(fish_wrap_angle(bearing - fish_orientation)) <= cone_angle * 0.5; + return fabs(wrap_angle(bearing - orientation)) <= cone_angle * 0.5; } // Electrostatic field model -static inline FishMonopole fish_transform_monopole( +static inline FishMonopole transform_monopole( FishMonopole local, - FishVec2 fish_position_cm, - double fish_orientation, + FishVec2 position_cm, + double orientation, bool emits_eod ) { FishMonopole world = { - .position_cm = fish_transform_position( - local.position_cm, fish_position_cm, fish_orientation + .position_cm = transform_position( + local.position_cm, position_cm, orientation ), .charge_c = emits_eod ? local.charge_c : 0.0, }; @@ -343,7 +342,7 @@ static inline FishMonopole fish_transform_monopole( * This follows electric.measure_electric_field_original exactly, including * adding eps_m to the distance rather than to squared distance. */ -static inline FishVec2 fish_measure_electric_field( +static inline FishVec2 measure_electric_field( FishVec2 measurement_position_cm, const FishMonopole* monopoles, size_t num_monopoles, @@ -352,23 +351,23 @@ static inline FishVec2 fish_measure_electric_field( double eps_m ) { FishVec2 measurement_m = { - measurement_position_cm.x * FISH_CM_TO_M, - measurement_position_cm.y * FISH_CM_TO_M, + measurement_position_cm.x * CM_TO_M, + measurement_position_cm.y * CM_TO_M, }; FishVec2 field = {0.0, 0.0}; for (size_t i = 0; i < num_monopoles; i++) { FishVec2 source_m = { - monopoles[i].position_cm.x * FISH_CM_TO_M, - monopoles[i].position_cm.y * FISH_CM_TO_M, + monopoles[i].position_cm.x * CM_TO_M, + monopoles[i].position_cm.y * CM_TO_M, }; FishVec2 offset = { measurement_m.x - source_m.x, measurement_m.y - source_m.y, }; - double distance = fish_vec_length(offset) + eps_m; + double distance = vec_length(offset) + eps_m; double weight = - FISH_K_COULOMB * monopoles[i].charge_c / + K_COULOMB * monopoles[i].charge_c / (distance * distance * distance); field.x += offset.x * weight; field.y += offset.y * weight; @@ -376,14 +375,14 @@ static inline FishVec2 fish_measure_electric_field( for (size_t i = 0; i < num_dipoles; i++) { FishVec2 source_m = { - dipoles[i].position_cm.x * FISH_CM_TO_M, - dipoles[i].position_cm.y * FISH_CM_TO_M, + dipoles[i].position_cm.x * CM_TO_M, + dipoles[i].position_cm.y * CM_TO_M, }; FishVec2 offset = { measurement_m.x - source_m.x, measurement_m.y - source_m.y, }; - double distance = fish_vec_length(offset) + eps_m; + double distance = vec_length(offset) + eps_m; double r2 = distance * distance; double r3 = r2 * distance; double r5 = r3 * r2; @@ -391,25 +390,25 @@ static inline FishVec2 fish_measure_electric_field( dipoles[i].moment_c_m.x * offset.x + dipoles[i].moment_c_m.y * offset.y; double axial = 3.0 * moment_dot_offset / r5; - field.x += FISH_K_COULOMB * ( + field.x += K_COULOMB * ( offset.x * axial - dipoles[i].moment_c_m.x / r3 ); - field.y += FISH_K_COULOMB * ( + field.y += K_COULOMB * ( offset.y * axial - dipoles[i].moment_c_m.y / r3 ); } return field; } -static inline FishVec2 fish_induce_dipole_moment( +static inline FishVec2 induce_dipole_moment( FishVec2 external_field_vm, double conductor_radius_cm, double conductor_contrast ) { - double radius_m = conductor_radius_cm * FISH_CM_TO_M; - double volume_m3 = (4.0 / 3.0) * FISH_PI * radius_m * radius_m * radius_m; + double radius_m = conductor_radius_cm * CM_TO_M; + double volume_m3 = (4.0 / 3.0) * PI * radius_m * radius_m * radius_m; double scale = - 3.0 * FISH_EPSILON_0 * volume_m3 * conductor_contrast; + 3.0 * EPSILON_0 * volume_m3 * conductor_contrast; return (FishVec2){ external_field_vm.x * scale, external_field_vm.y * scale, @@ -417,7 +416,7 @@ static inline FishVec2 fish_induce_dipole_moment( } // Field from the original sources plus their four first-order wall images. -static inline FishVec2 fish_measure_electric_field_with_reflections( +static inline FishVec2 measure_electric_field_with_reflections( FishVec2 measurement_position_cm, const FishMonopole* monopoles, size_t num_monopoles, @@ -428,21 +427,21 @@ static inline FishVec2 fish_measure_electric_field_with_reflections( double reflection_scale, bool flip_on_reflection ) { - FishVec2 field = fish_measure_electric_field( + FishVec2 field = measure_electric_field( measurement_position_cm, monopoles, num_monopoles, dipoles, num_dipoles, eps_m ); - for (int wall = FISH_WALL_LEFT; wall <= FISH_WALL_TOP; wall++) { + for (int wall = WALL_LEFT; wall <= WALL_TOP; wall++) { for (size_t i = 0; i < num_monopoles; i++) { FishMonopole image = monopoles[i]; - if (wall == FISH_WALL_LEFT) { + if (wall == WALL_LEFT) { image.position_cm.x = -image.position_cm.x; - } else if (wall == FISH_WALL_RIGHT) { + } else if (wall == WALL_RIGHT) { image.position_cm.x = 2.0 * arena_size_cm.x - image.position_cm.x; - } else if (wall == FISH_WALL_BOTTOM) { + } else if (wall == WALL_BOTTOM) { image.position_cm.y = -image.position_cm.y; } else { image.position_cm.y = @@ -450,7 +449,7 @@ static inline FishVec2 fish_measure_electric_field_with_reflections( } image.charge_c *= reflection_scale * (flip_on_reflection ? -1.0 : 1.0); - FishVec2 contribution = fish_measure_electric_field( + FishVec2 contribution = measure_electric_field( measurement_position_cm, &image, 1, NULL, 0, eps_m ); field.x += contribution.x; @@ -458,18 +457,18 @@ static inline FishVec2 fish_measure_electric_field_with_reflections( } for (size_t i = 0; i < num_dipoles; i++) { FishDipole image = dipoles[i]; - if (wall == FISH_WALL_LEFT) { + if (wall == WALL_LEFT) { image.position_cm.x = -image.position_cm.x; if (flip_on_reflection) { image.moment_c_m.x = -image.moment_c_m.x; } - } else if (wall == FISH_WALL_RIGHT) { + } else if (wall == WALL_RIGHT) { image.position_cm.x = 2.0 * arena_size_cm.x - image.position_cm.x; if (flip_on_reflection) { image.moment_c_m.x = -image.moment_c_m.x; } - } else if (wall == FISH_WALL_BOTTOM) { + } else if (wall == WALL_BOTTOM) { image.position_cm.y = -image.position_cm.y; if (flip_on_reflection) { image.moment_c_m.y = -image.moment_c_m.y; @@ -483,7 +482,7 @@ static inline FishVec2 fish_measure_electric_field_with_reflections( } image.moment_c_m.x *= reflection_scale; image.moment_c_m.y *= reflection_scale; - FishVec2 contribution = fish_measure_electric_field( + FishVec2 contribution = measure_electric_field( measurement_position_cm, NULL, 0, &image, 1, eps_m ); field.x += contribution.x; @@ -495,12 +494,12 @@ static inline FishVec2 fish_measure_electric_field_with_reflections( // Receptor geometry and transduction static inline double -fish_project_field(FishVec2 field, FishVec2 sensor_normal) { +project_field(FishVec2 field, FishVec2 sensor_normal) { return field.x * sensor_normal.x + field.y * sensor_normal.y; } static inline FishSensor -fish_radial_sensor(double angle, double body_radius_cm) { +radial_sensor(double angle, double body_radius_cm) { FishVec2 normal = {cos(angle), sin(angle)}; FishSensor sensor = { .position_cm = { @@ -513,8 +512,8 @@ fish_radial_sensor(double angle, double body_radius_cm) { } static inline double -fish_uniform_sensor_angle(size_t sensor_index, size_t num_sensors) { - return 2.0 * FISH_PI * (double)sensor_index / (double)num_sensors; +uniform_sensor_angle(size_t sensor_index, size_t num_sensors) { + return 2.0 * PI * (double)sensor_index / (double)num_sensors; } /* @@ -522,7 +521,7 @@ fish_uniform_sensor_angle(size_t sensor_index, size_t num_sensors) { * receptors span the forward-facing chin region, with the rest covering the * remaining circumference. Pass num_chin=10, num_rest=26 for the default 36. */ -static inline double fish_mormyromast_angle( +static inline double mormyromast_angle( size_t sensor_index, size_t num_chin, size_t num_rest, @@ -537,10 +536,10 @@ static inline double fish_mormyromast_angle( } size_t rest_index = sensor_index - num_chin; if (num_rest == 1) { - return FISH_PI; + return PI; } return 0.5 * chin_angle + - (2.0 * FISH_PI - chin_angle) * + (2.0 * PI - chin_angle) * (double)rest_index / (double)num_rest; } @@ -548,7 +547,7 @@ static inline double fish_mormyromast_angle( * Sign-preserving logarithmic normalization used by all receptor channels. * Values below threshold map to signed zero and values above maximum saturate. */ -static inline double fish_normalize_sensor_reading( +static inline double normalize_sensor_reading( double reading, double sensor_min, double sensor_max, @@ -559,7 +558,7 @@ static inline double fish_normalize_sensor_reading( } double sign = reading < 0.0 ? -1.0 : 1.0; double magnitude = fabs(reading); - magnitude = fish_clamp(magnitude, sensor_min, sensor_max); + magnitude = clamp(magnitude, sensor_min, sensor_max); magnitude = fmax(magnitude, eps); double denominator = log10(sensor_max) - log10(sensor_min); if (denominator <= 0.0) { @@ -567,7 +566,7 @@ static inline double fish_normalize_sensor_reading( } double normalized = (log10(magnitude) - log10(sensor_min)) / denominator; - return sign * fish_clamp(normalized, 0.0, 1.0); + return sign * clamp(normalized, 0.0, 1.0); } typedef struct Log { @@ -605,8 +604,8 @@ typedef struct FishAgentState { bool bite_action; bool was_bitten; bool ate_food; - float last_action[FISH_ACTION_SIZE]; - double ampullary_ema[FISH_NUM_AMPULLARY]; + float last_action[ACTION_SIZE]; + double ampullary_ema[NUM_AMPULLARY]; } FishAgentState; typedef struct FishFood { @@ -646,7 +645,7 @@ typedef struct FishEnv { double patch_density; double placement_radius_frac; FishAgentState agents[MAX_AGENTS]; - FishFood food[FISH_MAX_FOOD]; + FishFood food[MAX_FOOD]; int num_food; int food_eaten; int eod_agent_steps; @@ -654,12 +653,12 @@ typedef struct FishEnv { float episode_return; FishMonopole eod_sources[2 * MAX_AGENTS]; - FishDipole intrinsic_sources[MAX_AGENTS + FISH_MAX_FOOD]; - FishDipole induced_sources[MAX_AGENTS + FISH_MAX_FOOD]; + FishDipole intrinsic_sources[MAX_AGENTS + MAX_FOOD]; + FishDipole induced_sources[MAX_AGENTS + MAX_FOOD]; int num_intrinsic_sources; int num_induced_sources; - double mormyromast_cd[FISH_NUM_MORMYROMASTS]; - double amp_intrinsic_baseline[FISH_NUM_AMPULLARY]; + double mormyromast_cd[NUM_MORMYROMASTS]; + double amp_intrinsic_baseline[NUM_AMPULLARY]; Client* client; } FishEnv; @@ -689,9 +688,9 @@ static inline void init(FishEnv* env) { if (env->max_arena_size_cm.y <= 0.0) { env->max_arena_size_cm.y = env->min_arena_size_cm.y; } - if (env->configured_num_food <= 0) env->configured_num_food = FISH_MAX_FOOD; - if (env->configured_num_food > FISH_MAX_FOOD) { - env->configured_num_food = FISH_MAX_FOOD; + if (env->configured_num_food <= 0) env->configured_num_food = MAX_FOOD; + if (env->configured_num_food > MAX_FOOD) { + env->configured_num_food = MAX_FOOD; } if (env->fixed_num_patches <= 0) env->fixed_num_patches = 4; if (env->patch_radius_cm <= 0.0) env->patch_radius_cm = 6.0; @@ -701,7 +700,7 @@ static inline void init(FishEnv* env) { env->placement_radius_frac = 0.75; } env->placement_radius_frac = - fish_clamp(env->placement_radius_frac, 0.0, 1.0); + clamp(env->placement_radius_frac, 0.0, 1.0); if (env->food_distribution < FOOD_UNIFORM || env->food_distribution > FOOD_RANDOM) { env->food_distribution = FOOD_UNIFORM; @@ -716,7 +715,7 @@ static inline void init(FishEnv* env) { static inline void c_allocate(FishEnv* env) { init(env); env->observations = (float*)calloc((size_t)env->num_agents * OBS_SIZE, sizeof(float)); - env->actions = (float*)calloc((size_t)env->num_agents * FISH_ACTION_SIZE, sizeof(float)); + env->actions = (float*)calloc((size_t)env->num_agents * ACTION_SIZE, sizeof(float)); env->rewards = (float*)calloc((size_t)env->num_agents, sizeof(float)); env->terminals = (float*)calloc((size_t)env->num_agents, sizeof(float)); } @@ -728,50 +727,50 @@ void compute_observations(FishEnv* env) { int cursor = 0; /* Mormyromasts: active/collective image after direct-EOD subtraction. */ - for (int sensor_idx = 0; sensor_idx < FISH_NUM_MORMYROMASTS; + for (int sensor_idx = 0; sensor_idx < NUM_MORMYROMASTS; sensor_idx++) { - double angle = fish_mormyromast_angle( - (size_t)sensor_idx, 10, 26, FISH_PI / 3.0 + double angle = mormyromast_angle( + (size_t)sensor_idx, 10, 26, PI / 3.0 ); - FishSensor sensor = fish_transform_sensor( - fish_radial_sensor(angle, agent->movement.body_radius_cm), + FishSensor sensor = transform_sensor( + radial_sensor(angle, agent->movement.body_radius_cm), agent->movement.position_cm, agent->movement.orientation ); - FishVec2 induced = fish_measure_electric_field_with_reflections( + FishVec2 induced = measure_electric_field_with_reflections( sensor.position_cm, NULL, 0, env->induced_sources, (size_t)env->num_induced_sources, - env->arena_size_cm, FISH_FIELD_EPS_M, - FISH_REFLECTION_SCALE, false + env->arena_size_cm, FIELD_EPS_M, + REFLECTION_SCALE, false ); - double reading = fish_project_field(induced, sensor.normal); + double reading = project_field(induced, sensor.normal); if (!agent->emits_eod) { reading *= 100.0; } reading *= random_multiplier(env, 0.05); - obs[cursor++] = (float)fish_normalize_sensor_reading( - reading, FISH_MORMYROMAST_MIN_VM, - FISH_MORMYROMAST_MAX_VM, FISH_SENSOR_EPS + obs[cursor++] = (float)normalize_sensor_reading( + reading, MORMYROMAST_MIN_VM, + MORMYROMAST_MAX_VM, SENSOR_EPS ); } // Ampullary receptors: intrinsic sources with static self-field removed - for (int sensor_idx = 0; sensor_idx < FISH_NUM_AMPULLARY; + for (int sensor_idx = 0; sensor_idx < NUM_AMPULLARY; sensor_idx++) { - double angle = fish_uniform_sensor_angle( - (size_t)sensor_idx, FISH_NUM_AMPULLARY + double angle = uniform_sensor_angle( + (size_t)sensor_idx, NUM_AMPULLARY ); - FishSensor sensor = fish_transform_sensor( - fish_radial_sensor(angle, agent->movement.body_radius_cm), + FishSensor sensor = transform_sensor( + radial_sensor(angle, agent->movement.body_radius_cm), agent->movement.position_cm, agent->movement.orientation ); - FishVec2 field = fish_measure_electric_field_with_reflections( + FishVec2 field = measure_electric_field_with_reflections( sensor.position_cm, NULL, 0, env->intrinsic_sources, (size_t)env->num_intrinsic_sources, - env->arena_size_cm, FISH_FIELD_EPS_M, - FISH_REFLECTION_SCALE, false + env->arena_size_cm, FIELD_EPS_M, + REFLECTION_SCALE, false ); double reading = - fish_project_field(field, sensor.normal) - + project_field(field, sensor.normal) - env->amp_intrinsic_baseline[sensor_idx]; bool cons_eod = false; for (int other = 0; other < env->num_agents; other++) { @@ -781,52 +780,52 @@ void compute_observations(FishEnv* env) { } } reading *= random_multiplier(env, cons_eod ? 0.5 : 0.05); - double processed = fish_normalize_sensor_reading( - reading, FISH_AMPULLARY_MIN_VM, - FISH_AMPULLARY_MAX_VM, FISH_SENSOR_EPS + double processed = normalize_sensor_reading( + reading, AMPULLARY_MIN_VM, + AMPULLARY_MAX_VM, SENSOR_EPS ); obs[cursor++] = (float)processed; } /* Knollenorgans: one directional 12-receptor block per conspecific. */ int metadata_start = - FISH_NUM_MORMYROMASTS + FISH_NUM_AMPULLARY + - FISH_NUM_KNOLLEN * (MAX_AGENTS - 1); + NUM_MORMYROMASTS + NUM_AMPULLARY + + NUM_KNOLLEN * (MAX_AGENTS - 1); int cons_slot = 0; for (int other = 0; other < MAX_AGENTS; other++) { if (other == i) continue; bool valid = other < env->num_agents && env->agents[other].emits_eod; - for (int sensor_idx = 0; sensor_idx < FISH_NUM_KNOLLEN; + for (int sensor_idx = 0; sensor_idx < NUM_KNOLLEN; sensor_idx++) { double value = 0.0; if (valid) { - double angle = fish_uniform_sensor_angle( - (size_t)sensor_idx, FISH_NUM_KNOLLEN + double angle = uniform_sensor_angle( + (size_t)sensor_idx, NUM_KNOLLEN ); - FishSensor sensor = fish_transform_sensor( - fish_radial_sensor( + FishSensor sensor = transform_sensor( + radial_sensor( angle, agent->movement.body_radius_cm ), agent->movement.position_cm, agent->movement.orientation ); - FishVec2 field = fish_measure_electric_field( + FishVec2 field = measure_electric_field( sensor.position_cm, &env->eod_sources[2 * other], 2, - NULL, 0, FISH_FIELD_EPS_M + NULL, 0, FIELD_EPS_M ); double raw_knollen = - fish_project_field(field, sensor.normal); + project_field(field, sensor.normal); raw_knollen *= random_multiplier(env, 0.05); - value = fabs(raw_knollen) <= FISH_KNOLLEN_MIN_VM + value = fabs(raw_knollen) <= KNOLLEN_MIN_VM ? 0.0 : (raw_knollen < 0.0 ? -1.0 : 1.0); } obs[cursor++] = (float)value; } bool detected = false; - int block_start = cursor - FISH_NUM_KNOLLEN; - for (int k = 0; k < FISH_NUM_KNOLLEN; k++) { + int block_start = cursor - NUM_KNOLLEN; + for (int k = 0; k < NUM_KNOLLEN; k++) { if (obs[block_start + k] != 0.0f) { detected = true; break; @@ -836,29 +835,29 @@ void compute_observations(FishEnv* env) { if (valid && detected) { metadata = agent->size - env->agents[other].size; metadata += random_uniform(env, -0.05, 0.05); - metadata = fish_clamp(metadata, -1.0, 1.0); + metadata = clamp(metadata, -1.0, 1.0); } obs[metadata_start + cons_slot] = (float)metadata; cons_slot++; } while (cons_slot < MAX_AGENTS - 1) { - for (int k = 0; k < FISH_NUM_KNOLLEN; k++) obs[cursor++] = 0.0f; + for (int k = 0; k < NUM_KNOLLEN; k++) obs[cursor++] = 0.0f; obs[metadata_start + cons_slot++] = 0.0f; } cursor = metadata_start + MAX_AGENTS - 1; - for (int action_idx = 0; action_idx < FISH_ACTION_SIZE; action_idx++) { + for (int action_idx = 0; action_idx < ACTION_SIZE; action_idx++) { obs[cursor++] = agent->last_action[action_idx]; } obs[cursor++] = 0.0f; /* fatigue, retained for upstream layout */ obs[cursor++] = agent->was_bitten ? 1.0f : 0.0f; obs[cursor++] = (float)agent->size; obs[cursor++] = (float)agent->bite_cooldown; - obs[cursor++] = (float)fish_clamp( + obs[cursor++] = (float)clamp( agent->movement.displacement_ego_cm.x / agent->movement.max_linear_velocity, -1.0, 1.0 ); - obs[cursor++] = (float)fish_clamp( + obs[cursor++] = (float)clamp( agent->movement.displacement_ego_cm.y / agent->movement.max_linear_velocity, -1.0, 1.0 ); @@ -876,7 +875,7 @@ position_overlaps_agents( position.y - env->agents[i].movement.position_cm.y, }; double minimum = radius + env->agents[i].movement.body_radius_cm; - if (fish_vec_length_squared(delta) < minimum * minimum) return true; + if (vec_length_squared(delta) < minimum * minimum) return true; } return false; } @@ -893,51 +892,51 @@ static inline void calibrate_electroreceptors(FishEnv* env) { FishMonopole eod[2] = { { .position_cm = { - center.x + FISH_EOD_POLE_OFFSET_CM, center.y + center.x + EOD_POLE_OFFSET_CM, center.y }, - .charge_c = FISH_EOD_CHARGE_C, + .charge_c = EOD_CHARGE_C, }, { .position_cm = { - center.x - FISH_EOD_POLE_OFFSET_CM, center.y + center.x - EOD_POLE_OFFSET_CM, center.y }, - .charge_c = -FISH_EOD_CHARGE_C, + .charge_c = -EOD_CHARGE_C, }, }; FishDipole intrinsic = { .position_cm = center, - .moment_c_m = {FISH_INTRINSIC_MOMENT_C_M, 0.0}, + .moment_c_m = {INTRINSIC_MOMENT_C_M, 0.0}, }; - for (int i = 0; i < FISH_NUM_MORMYROMASTS; i++) { - double angle = fish_mormyromast_angle( - (size_t)i, 10, 26, FISH_PI / 3.0 + for (int i = 0; i < NUM_MORMYROMASTS; i++) { + double angle = mormyromast_angle( + (size_t)i, 10, 26, PI / 3.0 ); - FishSensor sensor = fish_radial_sensor(angle, FISH_BODY_RADIUS_CM); + FishSensor sensor = radial_sensor(angle, BODY_RADIUS_CM); sensor.position_cm.x += center.x; sensor.position_cm.y += center.y; - FishVec2 field = fish_measure_electric_field_with_reflections( + FishVec2 field = measure_electric_field_with_reflections( sensor.position_cm, eod, 2, NULL, 0, - env->arena_size_cm, FISH_FIELD_EPS_M, - FISH_REFLECTION_SCALE, false + env->arena_size_cm, FIELD_EPS_M, + REFLECTION_SCALE, false ); - env->mormyromast_cd[i] = fish_project_field(field, sensor.normal); + env->mormyromast_cd[i] = project_field(field, sensor.normal); } - for (int i = 0; i < FISH_NUM_AMPULLARY; i++) { - double angle = fish_uniform_sensor_angle( - (size_t)i, FISH_NUM_AMPULLARY + for (int i = 0; i < NUM_AMPULLARY; i++) { + double angle = uniform_sensor_angle( + (size_t)i, NUM_AMPULLARY ); - FishSensor sensor = fish_radial_sensor(angle, FISH_BODY_RADIUS_CM); + FishSensor sensor = radial_sensor(angle, BODY_RADIUS_CM); sensor.position_cm.x += center.x; sensor.position_cm.y += center.y; - FishVec2 field = fish_measure_electric_field_with_reflections( + FishVec2 field = measure_electric_field_with_reflections( sensor.position_cm, NULL, 0, &intrinsic, 1, - env->arena_size_cm, FISH_FIELD_EPS_M, - FISH_REFLECTION_SCALE, false + env->arena_size_cm, FIELD_EPS_M, + REFLECTION_SCALE, false ); env->amp_intrinsic_baseline[i] = - fish_project_field(field, sensor.normal); + project_field(field, sensor.normal); } } @@ -947,25 +946,25 @@ static inline void build_electric_scene(FishEnv* env) { for (int i = 0; i < env->num_agents; i++) { FishAgentState* agent = &env->agents[i]; FishMonopole positive = { - .position_cm = {FISH_EOD_POLE_OFFSET_CM, 0.0}, - .charge_c = FISH_EOD_CHARGE_C, + .position_cm = {EOD_POLE_OFFSET_CM, 0.0}, + .charge_c = EOD_CHARGE_C, }; FishMonopole negative = { - .position_cm = {-FISH_EOD_POLE_OFFSET_CM, 0.0}, - .charge_c = -FISH_EOD_CHARGE_C, + .position_cm = {-EOD_POLE_OFFSET_CM, 0.0}, + .charge_c = -EOD_CHARGE_C, }; - env->eod_sources[2 * i] = fish_transform_monopole( + env->eod_sources[2 * i] = transform_monopole( positive, agent->movement.position_cm, agent->movement.orientation, agent->emits_eod ); - env->eod_sources[2 * i + 1] = fish_transform_monopole( + env->eod_sources[2 * i + 1] = transform_monopole( negative, agent->movement.position_cm, agent->movement.orientation, agent->emits_eod ); env->intrinsic_sources[env->num_intrinsic_sources++] = (FishDipole){ .position_cm = agent->movement.position_cm, - .moment_c_m = fish_rotate( - (FishVec2){FISH_INTRINSIC_MOMENT_C_M, 0.0}, + .moment_c_m = rotate( + (FishVec2){INTRINSIC_MOMENT_C_M, 0.0}, agent->movement.orientation ), }; @@ -975,8 +974,8 @@ static inline void build_electric_scene(FishEnv* env) { if (!env->food[i].active) continue; FishDipole intrinsic = { .position_cm = env->food[i].motion.position_cm, - .moment_c_m = fish_rotate( - (FishVec2){0.0, FISH_FOOD_INTRINSIC_MOMENT_C_M}, + .moment_c_m = rotate( + (FishVec2){0.0, FOOD_INTRINSIC_MOMENT_C_M}, env->food[i].motion.orientation ), }; @@ -988,19 +987,19 @@ static inline void build_electric_scene(FishEnv* env) { FishVec2 position = env->agents[i].movement.position_cm; FishVec2 moment = {0.0, 0.0}; if (!env->agents[i].emits_eod) { - FishVec2 field = fish_measure_electric_field( + FishVec2 field = measure_electric_field( position, env->eod_sources, (size_t)(2 * env->num_agents), - NULL, 0, FISH_FIELD_EPS_M + NULL, 0, FIELD_EPS_M ); - moment = fish_induce_dipole_moment( + moment = induce_dipole_moment( field, env->agents[i].movement.body_radius_cm, - FISH_CONDUCTOR_CONTRAST + CONDUCTOR_CONTRAST ); } - double moment_magnitude = fish_vec_length(moment); + double moment_magnitude = vec_length(moment); double max_moment = - FISH_EOD_CHARGE_C * env->agents[i].movement.body_radius_cm; - if (FISH_EOD_CHARGE_C >= 0.0 && moment_magnitude > max_moment) { + EOD_CHARGE_C * env->agents[i].movement.body_radius_cm; + if (EOD_CHARGE_C >= 0.0 && moment_magnitude > max_moment) { double moment_scale = max_moment / moment_magnitude; moment = (FishVec2){ moment.x * moment_scale, @@ -1014,14 +1013,14 @@ static inline void build_electric_scene(FishEnv* env) { for (int i = 0; i < env->num_food; i++) { if (!env->food[i].active) continue; FishVec2 position = env->food[i].motion.position_cm; - FishVec2 field = fish_measure_electric_field( + FishVec2 field = measure_electric_field( position, env->eod_sources, (size_t)(2 * env->num_agents), - NULL, 0, FISH_FIELD_EPS_M + NULL, 0, FIELD_EPS_M ); env->induced_sources[env->num_induced_sources++] = (FishDipole){ .position_cm = position, - .moment_c_m = fish_induce_dipole_moment( - field, FISH_FOOD_RADIUS_CM, FISH_CONDUCTOR_CONTRAST + .moment_c_m = induce_dipole_moment( + field, FOOD_RADIUS_CM, CONDUCTOR_CONTRAST ), }; } @@ -1060,22 +1059,22 @@ void c_reset(FishEnv* env) { }; } while ( position_overlaps_agents( - env, position, i, FISH_BODY_RADIUS_CM + env, position, i, BODY_RADIUS_CM ) && ++attempts < 1000 ); agent.movement = (FishMovement){ .position_cm = position, - .orientation = random_uniform(env, -FISH_PI, FISH_PI), - .body_radius_cm = FISH_BODY_RADIUS_CM, - .min_linear_velocity = -5.0 / FISH_SIMULATION_HZ, - .max_linear_velocity = 35.0 / FISH_SIMULATION_HZ, - .max_linear_acceleration = 650.0 / (FISH_SIMULATION_HZ * FISH_SIMULATION_HZ), - .min_angular_velocity = -3.5 / FISH_SIMULATION_HZ, - .max_angular_velocity = 3.6 / FISH_SIMULATION_HZ, - .max_angular_acceleration = 318.0 / (FISH_SIMULATION_HZ * FISH_SIMULATION_HZ), + .orientation = random_uniform(env, -PI, PI), + .body_radius_cm = BODY_RADIUS_CM, + .min_linear_velocity = -5.0 / SIMULATION_HZ, + .max_linear_velocity = 35.0 / SIMULATION_HZ, + .max_linear_acceleration = 650.0 / (SIMULATION_HZ * SIMULATION_HZ), + .min_angular_velocity = -3.5 / SIMULATION_HZ, + .max_angular_velocity = 3.6 / SIMULATION_HZ, + .max_angular_acceleration = 318.0 / (SIMULATION_HZ * SIMULATION_HZ), .linear_drag_factor = 0.95, .angular_drag_factor = 0.95, - .motion_order = FISH_MOTION_FIRST_ORDER, + .motion_order = MOTION_FIRST_ORDER, .backwards = false, }; double size_multiplier = 1.0 + agent.size; @@ -1103,7 +1102,7 @@ void c_reset(FishEnv* env) { env->patch_density * env->arena_size_cm.x * env->arena_size_cm.y ); - num_patches = (int)fish_clamp(num_patches, 1, MAX_PATCHES); + num_patches = (int)clamp(num_patches, 1, MAX_PATCHES); for (int i = 0; i < num_patches; i++) { patch_centers[i] = (FishVec2){ random_uniform(env, 0.0, env->arena_size_cm.x), @@ -1114,8 +1113,8 @@ void c_reset(FishEnv* env) { ); double u2 = random_uniform(env, 0.0, 1.0); double normal_sample = - sqrt(-2.0 * log(u1)) * cos(2.0 * FISH_PI * u2); - patch_radii[i] = fish_clamp( + sqrt(-2.0 * log(u1)) * cos(2.0 * PI * u2); + patch_radii[i] = clamp( env->patch_radius_cm + normal_sample * env->patch_radius_std_cm, 1.0, minimum_edge / 2.0 @@ -1124,13 +1123,13 @@ void c_reset(FishEnv* env) { total_patch_weight += patch_weights[i]; } } else if (env->active_food_distribution == FOOD_N_PATCH) { - num_patches = (int)fish_clamp( + num_patches = (int)clamp( env->fixed_num_patches, 1, MAX_PATCHES ); - double initial_angle = random_uniform(env, 0.0, 2.0 * FISH_PI); + double initial_angle = random_uniform(env, 0.0, 2.0 * PI); for (int i = 0; i < num_patches; i++) { double angle = - initial_angle + 2.0 * FISH_PI * i / num_patches; + initial_angle + 2.0 * PI * i / num_patches; patch_centers[i] = (FishVec2){ env->arena_size_cm.x * 0.5 * (1.0 + env->placement_radius_frac * cos(angle)), @@ -1152,8 +1151,8 @@ void c_reset(FishEnv* env) { ); double u2 = random_uniform(env, 0.0, 1.0); double normal_sample = - sqrt(-2.0 * log(u1)) * cos(2.0 * FISH_PI * u2); - patch_radii[0] = fish_clamp( + sqrt(-2.0 * log(u1)) * cos(2.0 * PI * u2); + patch_radii[0] = clamp( env->patch_radius_cm + normal_sample * env->patch_radius_std_cm, 0.1, minimum_edge / 2.0 @@ -1180,7 +1179,7 @@ void c_reset(FishEnv* env) { } int attempts = 0; do { - double angle = random_uniform(env, 0.0, 2.0 * FISH_PI); + double angle = random_uniform(env, 0.0, 2.0 * PI); double radius = patch_radii[patch] * sqrt( random_uniform(env, 0.0, 1.0) ); @@ -1195,17 +1194,17 @@ void c_reset(FishEnv* env) { food_position.y >= env->arena_size_cm.y) && ++attempts < 1000 ); - food_position.x = fish_clamp( + food_position.x = clamp( food_position.x, 0.0, env->arena_size_cm.x ); - food_position.y = fish_clamp( + food_position.y = clamp( food_position.y, 0.0, env->arena_size_cm.y ); } env->food[i] = (FishFood){ .motion = { .position_cm = food_position, - .orientation = random_uniform(env, 0.0, 2.0 * FISH_PI), + .orientation = random_uniform(env, 0.0, 2.0 * PI), }, .active = true, }; @@ -1235,15 +1234,15 @@ bool try_eat(FishEnv* env, int agent_idx) { double nearest_distance = INFINITY; for (int i = 0; i < env->num_food; i++) { if (!env->food[i].active) continue; - if (!fish_point_in_forward_cone( + if (!point_in_forward_cone( agent->movement.position_cm, agent->movement.orientation, env->food[i].motion.position_cm, - FISH_EATING_RADIUS_CM, FISH_EATING_ANGLE)) continue; + EATING_RADIUS_CM, EATING_ANGLE)) continue; FishVec2 offset = { env->food[i].motion.position_cm.x - agent->movement.position_cm.x, env->food[i].motion.position_cm.y - agent->movement.position_cm.y, }; - double distance = fish_vec_length_squared(offset); + double distance = vec_length_squared(offset); if (distance < nearest_distance) { nearest = i; nearest_distance = distance; @@ -1270,11 +1269,11 @@ void c_step(FishEnv* env) { for (int food_idx = 0; food_idx < env->num_food; food_idx++) { if (!env->food[food_idx].active) continue; FishFoodMotion* food = &env->food[food_idx].motion; - food->position_cm.x = fish_clamp( + food->position_cm.x = clamp( food->position_cm.x + food->velocity_cm.x, 0.0, env->arena_size_cm.x ); - food->position_cm.y = fish_clamp( + food->position_cm.y = clamp( food->position_cm.y + food->velocity_cm.y, 0.0, env->arena_size_cm.y ); @@ -1282,7 +1281,7 @@ void c_step(FishEnv* env) { for (int i = 0; i < env->num_agents; i++) { FishAgentState* agent = &env->agents[i]; - float* raw_action = env->actions + i * FISH_ACTION_SIZE; + float* raw_action = env->actions + i * ACTION_SIZE; double move = 1.0 / (1.0 + exp(-(double)raw_action[0])); double turn = tanh((double)raw_action[1]); agent->emits_eod = raw_action[2] > 0.0f; @@ -1297,26 +1296,26 @@ void c_step(FishEnv* env) { if (!agent->bite_action && agent->eat_cooldown <= 0.0) { if (try_eat(env, i)) { - env->rewards[i] += FISH_EAT_REWARD; + env->rewards[i] += EAT_REWARD; } } - FishMotionProposal proposal = fish_propose_motion( + FishMotionProposal proposal = propose_motion( &agent->movement, move, turn, agent->eat_cooldown > 0.0 ); FishMovement movement_views[MAX_AGENTS]; for (int j = 0; j < env->num_agents; j++) { movement_views[j] = env->agents[j].movement; } - bool collided = fish_motion_collides( + bool collided = motion_collides( proposal.position_cm, agent->movement.body_radius_cm, movement_views, (size_t)env->num_agents, (size_t)i ); - bool hit_wall = fish_commit_motion( + bool hit_wall = commit_motion( &agent->movement, proposal, collided, env->arena_size_cm ); env->collisions_fish += collided ? 1 : 0; if (collided || hit_wall) { - env->rewards[i] += FISH_COLLISION_REWARD; + env->rewards[i] += COLLISION_REWARD; } } @@ -1328,18 +1327,18 @@ void c_step(FishEnv* env) { double nearest = INFINITY; for (int j = 0; j < env->num_agents; j++) { if (i == j) continue; - if (!fish_point_in_forward_cone( + if (!point_in_forward_cone( attacker->movement.position_cm, attacker->movement.orientation, env->agents[j].movement.position_cm, - FISH_BITING_RADIUS_CM, FISH_EATING_ANGLE)) continue; + BITING_RADIUS_CM, EATING_ANGLE)) continue; FishVec2 offset = { env->agents[j].movement.position_cm.x - attacker->movement.position_cm.x, env->agents[j].movement.position_cm.y - attacker->movement.position_cm.y, }; - double distance = fish_vec_length_squared(offset); + double distance = vec_length_squared(offset); if (distance < nearest) { victim = j; nearest = distance; @@ -1350,7 +1349,7 @@ void c_step(FishEnv* env) { double size_difference = attacker->size - env->agents[victim].size; env->rewards[victim] += - FISH_BITTEN_REWARD * (float)(1.0 + fmax(0.0, size_difference)); + BITTEN_REWARD * (float)(1.0 + fmax(0.0, size_difference)); } } @@ -1405,7 +1404,7 @@ static inline Client* make_client(void) { } static inline Color field_color(double log_strength) { - double normalized = fish_clamp((log_strength + 8.0) / 7.0, 0.0, 1.0); + double normalized = clamp((log_strength + 8.0) / 7.0, 0.0, 1.0); unsigned char shade = (unsigned char)(205.0 - 95.0 * normalized); return (Color){shade, shade, shade, 190}; } @@ -1438,22 +1437,22 @@ static inline void render_field( } if (!near_fish) continue; - FishVec2 field = fish_measure_electric_field_with_reflections( + FishVec2 field = measure_electric_field_with_reflections( position, monopoles, (size_t)(2 * env->num_agents), dipoles, (size_t)( env->num_intrinsic_sources + env->num_induced_sources ), env->arena_size_cm, - FISH_FIELD_EPS_M, - FISH_REFLECTION_SCALE, + FIELD_EPS_M, + REFLECTION_SCALE, false ); - double strength = fish_vec_length(field); + double strength = vec_length(field); if (strength <= 0.0) continue; double log_strength = log10(strength); double arrow_length = 4.0 + 10.0 * - fish_clamp((log_strength + 8.0) / 7.0, 0.0, 1.0); + clamp((log_strength + 8.0) / 7.0, 0.0, 1.0); FishVec2 direction = { field.x / strength, field.y / strength, @@ -1481,7 +1480,7 @@ static inline void c_render(FishEnv* env) { } FishMonopole monopoles[2 * MAX_AGENTS]; - FishDipole dipoles[FISH_MAX_DIPOLE_SOURCES]; + FishDipole dipoles[MAX_DIPOLE_SOURCES]; for (int i = 0; i < 2 * env->num_agents; i++) { monopoles[i] = env->eod_sources[i]; } @@ -1524,7 +1523,7 @@ static inline void c_render(FishEnv* env) { render_field(env, monopoles, dipoles); } - const Color fish_color = {157, 122, 216, 255}; + const Color color = {157, 122, 216, 255}; for (int i = 0; i < env->num_agents; i++) { Trace* trace = &env->client->traces[i]; for (int j = 0; j < trace->count - 1; j++) { @@ -1537,7 +1536,7 @@ static inline void c_render(FishEnv* env) { DrawLineEx( world_to_screen(env, trace->positions[current]), world_to_screen(env, trace->positions[previous]), - 2.0f, ColorAlpha(fish_color, alpha) + 2.0f, ColorAlpha(color, alpha) ); } } @@ -1548,7 +1547,7 @@ static inline void c_render(FishEnv* env) { Vector2 position = world_to_screen( env, env->food[i].motion.position_cm ); - float radius = fmaxf(2.5f, (float)(FISH_FOOD_RADIUS_CM * scale)); + float radius = fmaxf(2.5f, (float)(FOOD_RADIUS_CM * scale)); DrawCircleV(position, radius, (Color){80, 220, 125, 255}); DrawCircleLines( (int)position.x, (int)position.y, radius, @@ -1565,18 +1564,18 @@ static inline void c_render(FishEnv* env) { float pulse = radius + 5.0f + 5.0f * sinf((float)env->tick * 0.18f); DrawCircleLines((int)center.x, (int)center.y, pulse, - (Color){fish_color.r, fish_color.g, fish_color.b, 120}); + (Color){color.r, color.g, color.b, 120}); } float heading_x = cosf((float)fish->orientation); float heading_y = -sinf((float)fish->orientation); DrawRing(center, radius - 1.5f, radius + 1.5f, - 0.0f, 360.0f, 32, fish_color); + 0.0f, 360.0f, 32, color); Vector2 nose = { center.x + heading_x * radius * 1.35f, center.y + heading_y * radius * 1.35f, }; - DrawLineEx(center, nose, 3.0f, fish_color); + DrawLineEx(center, nose, 3.0f, color); Vector2 positive = world_to_screen( env, monopoles[2 * i].position_cm @@ -1588,15 +1587,15 @@ static inline void c_render(FishEnv* env) { DrawCircleV(negative, 3.0f, BLUE); if (env->client->show_sensors) { - for (int sensor_idx = 0; sensor_idx < FISH_NUM_KNOLLEN; + for (int sensor_idx = 0; sensor_idx < NUM_KNOLLEN; sensor_idx++) { - double angle = fish_uniform_sensor_angle( - (size_t)sensor_idx, FISH_NUM_KNOLLEN + double angle = uniform_sensor_angle( + (size_t)sensor_idx, NUM_KNOLLEN ); - FishSensor sensor = fish_radial_sensor( + FishSensor sensor = radial_sensor( angle, fish->body_radius_cm ); - sensor = fish_transform_sensor( + sensor = transform_sensor( sensor, fish->position_cm, fish->orientation ); DrawCircleV( From db00995feb5001e047ba14875a3f45807343eb28 Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Thu, 30 Jul 2026 12:18:03 -0400 Subject: [PATCH 05/20] Rename to wef; nice and short. --- config/{electric_fish.ini => wef.ini} | 2 +- ocean/{electric_fish => wef}/binding.c | 2 +- .../electric_fish.c => wef/wef.c} | 8 ++--- .../electric_fish.h => wef/wef.h} | 29 +++++++++--------- ...ic_fish_physics.py => test_wef_physics.py} | 8 ++--- wef | Bin 0 -> 3122000 bytes 6 files changed, 25 insertions(+), 24 deletions(-) rename config/{electric_fish.ini => wef.ini} (99%) rename ocean/{electric_fish => wef}/binding.c (98%) rename ocean/{electric_fish/electric_fish.c => wef/wef.c} (95%) rename ocean/{electric_fish/electric_fish.h => wef/wef.h} (98%) rename tests/{test_electric_fish_physics.py => test_wef_physics.py} (87%) create mode 100755 wef diff --git a/config/electric_fish.ini b/config/wef.ini similarity index 99% rename from config/electric_fish.ini rename to config/wef.ini index 35e53cefa4..be7e49d20d 100644 --- a/config/electric_fish.ini +++ b/config/wef.ini @@ -1,5 +1,5 @@ [base] -env_name = electric_fish +env_name = wef [vec] total_agents = 4096 diff --git a/ocean/electric_fish/binding.c b/ocean/wef/binding.c similarity index 98% rename from ocean/electric_fish/binding.c rename to ocean/wef/binding.c index 5a74754f66..2c20337016 100644 --- a/ocean/electric_fish/binding.c +++ b/ocean/wef/binding.c @@ -1,4 +1,4 @@ -#include "electric_fish.h" +#include "wef.h" #define NUM_ATNS ACTION_SIZE #define ACT_SIZES {1, 1, 1, 1} diff --git a/ocean/electric_fish/electric_fish.c b/ocean/wef/wef.c similarity index 95% rename from ocean/electric_fish/electric_fish.c rename to ocean/wef/wef.c index 34960bba7b..7e4195414a 100644 --- a/ocean/electric_fish/electric_fish.c +++ b/ocean/wef/wef.c @@ -2,14 +2,14 @@ * Standalone random-policy demo. * * Build: - * ./build.sh electric_fish --local + * ./build.sh wef --local * Run: - * ./electric_fish + * ./wef */ #include #include -#include "electric_fish.h" +#include "wef.h" static float random_action(unsigned int* rng) { return 2.0f * (float)rand_r(rng) / (float)RAND_MAX - 1.0f; @@ -111,7 +111,7 @@ int main(int argc, char** argv) { } if (headless) { - printf("electric_fish headless smoke test: 1000 steps, %d food eaten\n", + printf("wef headless smoke test: 1000 steps, %d food eaten\n", env.food_eaten); } free_allocated(&env); diff --git a/ocean/electric_fish/electric_fish.h b/ocean/wef/wef.h similarity index 98% rename from ocean/electric_fish/electric_fish.h rename to ocean/wef/wef.h index 750a6733a3..de3352c3e4 100644 --- a/ocean/electric_fish/electric_fish.h +++ b/ocean/wef/wef.h @@ -23,6 +23,7 @@ #include "raylib.h" // Constants +#define PI_D 3.14159265358979323846264338327950288 #define CM_TO_M 0.01 #define K_COULOMB 8.99e9 #define EPSILON_0 8.854e-12 @@ -50,7 +51,7 @@ #define ACTION_SIZE 4 #define EATING_RADIUS_CM 2.0 #define BITING_RADIUS_CM 3.0 -#define EATING_ANGLE (PI / 4.0) +#define EATING_ANGLE (PI_D / 4.0) #define EAT_REWARD 10.0f #define COLLISION_REWARD -0.5f #define BITTEN_REWARD -5.0f @@ -406,7 +407,7 @@ static inline FishVec2 induce_dipole_moment( double conductor_contrast ) { double radius_m = conductor_radius_cm * CM_TO_M; - double volume_m3 = (4.0 / 3.0) * PI * radius_m * radius_m * radius_m; + double volume_m3 = (4.0 / 3.0) * PI_D * radius_m * radius_m * radius_m; double scale = 3.0 * EPSILON_0 * volume_m3 * conductor_contrast; return (FishVec2){ @@ -513,7 +514,7 @@ radial_sensor(double angle, double body_radius_cm) { static inline double uniform_sensor_angle(size_t sensor_index, size_t num_sensors) { - return 2.0 * PI * (double)sensor_index / (double)num_sensors; + return 2.0 * PI_D * (double)sensor_index / (double)num_sensors; } /* @@ -536,10 +537,10 @@ static inline double mormyromast_angle( } size_t rest_index = sensor_index - num_chin; if (num_rest == 1) { - return PI; + return PI_D; } return 0.5 * chin_angle + - (2.0 * PI - chin_angle) * + (2.0 * PI_D - chin_angle) * (double)rest_index / (double)num_rest; } @@ -730,7 +731,7 @@ void compute_observations(FishEnv* env) { for (int sensor_idx = 0; sensor_idx < NUM_MORMYROMASTS; sensor_idx++) { double angle = mormyromast_angle( - (size_t)sensor_idx, 10, 26, PI / 3.0 + (size_t)sensor_idx, 10, 26, PI_D / 3.0 ); FishSensor sensor = transform_sensor( radial_sensor(angle, agent->movement.body_radius_cm), @@ -910,7 +911,7 @@ static inline void calibrate_electroreceptors(FishEnv* env) { for (int i = 0; i < NUM_MORMYROMASTS; i++) { double angle = mormyromast_angle( - (size_t)i, 10, 26, PI / 3.0 + (size_t)i, 10, 26, PI_D / 3.0 ); FishSensor sensor = radial_sensor(angle, BODY_RADIUS_CM); sensor.position_cm.x += center.x; @@ -1064,7 +1065,7 @@ void c_reset(FishEnv* env) { ); agent.movement = (FishMovement){ .position_cm = position, - .orientation = random_uniform(env, -PI, PI), + .orientation = random_uniform(env, -PI_D, PI_D), .body_radius_cm = BODY_RADIUS_CM, .min_linear_velocity = -5.0 / SIMULATION_HZ, .max_linear_velocity = 35.0 / SIMULATION_HZ, @@ -1113,7 +1114,7 @@ void c_reset(FishEnv* env) { ); double u2 = random_uniform(env, 0.0, 1.0); double normal_sample = - sqrt(-2.0 * log(u1)) * cos(2.0 * PI * u2); + sqrt(-2.0 * log(u1)) * cos(2.0 * PI_D * u2); patch_radii[i] = clamp( env->patch_radius_cm + normal_sample * env->patch_radius_std_cm, @@ -1126,10 +1127,10 @@ void c_reset(FishEnv* env) { num_patches = (int)clamp( env->fixed_num_patches, 1, MAX_PATCHES ); - double initial_angle = random_uniform(env, 0.0, 2.0 * PI); + double initial_angle = random_uniform(env, 0.0, 2.0 * PI_D); for (int i = 0; i < num_patches; i++) { double angle = - initial_angle + 2.0 * PI * i / num_patches; + initial_angle + 2.0 * PI_D * i / num_patches; patch_centers[i] = (FishVec2){ env->arena_size_cm.x * 0.5 * (1.0 + env->placement_radius_frac * cos(angle)), @@ -1151,7 +1152,7 @@ void c_reset(FishEnv* env) { ); double u2 = random_uniform(env, 0.0, 1.0); double normal_sample = - sqrt(-2.0 * log(u1)) * cos(2.0 * PI * u2); + sqrt(-2.0 * log(u1)) * cos(2.0 * PI_D * u2); patch_radii[0] = clamp( env->patch_radius_cm + normal_sample * env->patch_radius_std_cm, @@ -1179,7 +1180,7 @@ void c_reset(FishEnv* env) { } int attempts = 0; do { - double angle = random_uniform(env, 0.0, 2.0 * PI); + double angle = random_uniform(env, 0.0, 2.0 * PI_D); double radius = patch_radii[patch] * sqrt( random_uniform(env, 0.0, 1.0) ); @@ -1204,7 +1205,7 @@ void c_reset(FishEnv* env) { env->food[i] = (FishFood){ .motion = { .position_cm = food_position, - .orientation = random_uniform(env, 0.0, 2.0 * PI), + .orientation = random_uniform(env, 0.0, 2.0 * PI_D), }, .active = true, }; diff --git a/tests/test_electric_fish_physics.py b/tests/test_wef_physics.py similarity index 87% rename from tests/test_electric_fish_physics.py rename to tests/test_wef_physics.py index 3329476486..e43c5aef89 100644 --- a/tests/test_electric_fish_physics.py +++ b/tests/test_wef_physics.py @@ -8,7 +8,7 @@ # Generated from KempnerInstitute/wef ElectricScene using the deterministic # two-fish/one-food fixture implemented by -# `./electric_fish --physics-fixture`. +# `./wef --physics-fixture`. UPSTREAM_FIXTURE = { "eod": [2.156647270767495e-05, 2.2287084167914553e-05], "intrinsic": [1.303699593123667e-11, 2.044228319704432e-11], @@ -20,11 +20,11 @@ } -def test_electric_fish_scene_matches_upstream_fixture(): - executable = ROOT / "electric_fish" +def test_wef_scene_matches_upstream_fixture(): + executable = ROOT / "wef" if not executable.is_file(): subprocess.run( - [str(ROOT / "build.sh"), "electric_fish", "--fast"], + [str(ROOT / "build.sh"), "wef", "--fast"], cwd=ROOT, check=True, ) diff --git a/wef b/wef new file mode 100755 index 0000000000000000000000000000000000000000..e847fdb2be5a9873a5fcfeea6db07246721916d2 GIT binary patch literal 3122000 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 g(O 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
    F5|f4m{%re@1{ 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

    2#xoQcR3! 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

    $=0HggWg3+9P|}dH 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

    {53Nuph z7g70=OVlW5OJuH6Z@4}57m50e{&BI)?)Z$_OvRK|q z;bG8kG#mS8$>P>Jt+(Ngj;_w<{6GpV9>%7N{`4k1%zKxz zKR7NW$kVX|kUs7lx86?~I6{sl*lU-Ws5owIF|%Di9DBU%0HjF;F@r6(0L(=dD zKm?Vc(c@?|##wP%37Z})c{F_n`miiV>L~7zl@NMYOcSCzQ2rbQAW>~}%xMeT7+0Yh z7w1A)9SD#JYry+JbN)t*9=2&93F;m4n(+F}_LGrH+bnbGAX z4V)DL6ICv(%5-UJFJ6|tSw*3XD#sEp+Cbn3gjDgcqB-=JneQi<8Yj7 z$4q7Qjr2U9y0O#J_7g}Y2eR0KcO@PwGY+>?~`-EDMlCZ?CzZy27MLScM+za?MY8NFM5eW$1K z^Gt7WT6av+y;RQIR7YACx%u8s;{bi2w=&kcPP`ji3z>tgm6IHgbYaCS#WN6gG3)P9 z3sPs{ALdhuLL#oeg-wKu_dTC3H?Kp`E;zDYjWWjjz_*#9NP%R!N_WE_xo>!Dl(RsVT}a?y6TDR5%pc+k~r_ z$+$#Ig5>w8E+Co-lFz3xQd7wyxXu@vn0K8gG}<&I$brW-KuhWWuVa5#E5;L%6rri< zl}vvVR22jqW5HJU$@q5}x8wCQ2UK5f#@XULMqV++J73aHCc~4htOjL>lVwVfa)*Cb zMA(8mG`T2Ll^<-02eRF!V!mw7ja?mi8S02Q+2gKJ&X2)SiZovK52&Au^{3glOrMZD zEl(!7CiI{AiBqebsmBs=#=}U|Z@GmjM-f4>IJ@dC0fW+ng8u4nQwo19hgWnaWU4Y} zm$zVzoU+uGgY!6pXq$BgQLhn^%p$8S@P#<1!bAvXDiXvm*+w;fAoAql?s&YfZgYSb zC|cyWLYfP_ERH9_)qWNGmA;IHU_yik`GwFrU}VO^1zTDiwPKf$tt--LU!>DR@f8K? z3{2P_QnlH=*r)1*X87!Q{;hJ?+||wIhjG~lU5TMXo5X*2(Y>~wMdn~r4zDtgtg_k0 zdKW36Pz67KIVl)=D2G>RSmFB@JJ-Y?`0v#7t2Pr3j+^&VU%@B7oESZ0MiO>G7FXu}s?y0h7PaXb-Ul1F4L@OPm@Y#F5M zOU*p7F{Ch~{e3V#A0{y4D=!X{N?qp-9wca|+`hyeZxAT0^&;eP=3Wkv$`MG_e#(-J zN$l;`IjX7aTr^e4CpD7IqbUj}>+h`Rr+!1?J2Ry)*qj^1EiieWfbgTO@UdRO(q?le z&R$Uy5E+y0)gkZriA6Ap{1`5#?GJ)I;A3ND&cVupMnNEl|E4s2Jby$ax5z59@KKn^ zOIfTTPEQF&TZ^($1(-AYe>TiG-AERmM&xKR(N#Z3u39sfS z1z}4oKv-pe^b!-s@z}EL>?_>yMg_$s-o~w9ZPyM!vV%af_D#WBJRw}4k)50NE|m6? zh#4JfBBo@X{kQNjg*N`1_y{#SV9`MTwQ2Zx&e7Yo+t9tWCXWgah2U!P_=-k8 zA&j;joK+@!PEStOkB;7G)i;Ik5d|dB=#v^t7!E#N8M%_!GDkAeP9-} zy!Wr;cdvgHzl{Sgfp6+0rgK8Zkyw3stpd)g{G?#vID`WskFf>-w=5`CviASUQntL! z12~kHw~<_~7_5{by8r(czW(2&pODW?jkAmXYT_*PGxI;8pSS*d^s_7Ub8ia$T;(pk zBtLK_n!#aRv7X^?395RV+oTcG+UHGT`ai&~^Hcbte;vR6Q~G(|i$6*~znP&ht=r7B zWq8n?q@RbOpU0-t&!yhR&t=y?iKD?!5=bWL=i|D)L;R#*?(?*#Hg=V{JGfg8Em=~d zzU-2kD3A~t8jKm#Q~Yq1=7H}rsnUnCrWMmRQ(r-uHp|t~DN`qywmpF&7H7sY?Su2xqa?gb8bg3bvL=Y+DFUYa+OE*@ElYzDQxm*WqcQjNO%7Wep2XH z1BDi+bSRBeBK%VJoZRG|Bd}1M(!%NLI~Vq$DXcptrxeiN@#*h8FW*USNTa1t!|^Wt z_ILc$U&-47$5M(D^h?&i(qAO>aUx$hf)c5T%p*Ku?HgQ|ho?JLmc1Z1KJ=L0#_c2< z{6^)ZiIpVU`%(SeKI2+H(mlFRj*Ik{4G#|J@xzo|!^7o0&`M)(ZmpGDfXlR2J%99S zLMyl97@1bIat}im)3tK%3{`M?LX%gjNfv8{ z*gtZ|m+}EQSd0~hgr4sWcg^Pm{&}%Aw0ej$|@4 zW~^*T>5A&|{cG)wXOGM!52>3Y1cKWezoq5PX zgCqDI_h<#nL;o<&`yH9=AqfN4O2HF508z4RgSud`qoNJod_yq zF7952!8bDxQimC7iBs|(@6-w1fYHRe6^uFps`?O}(J-3UU#*}s{)is7Y9QQ97@k)0__=(Dwa zdFd$SxfPm{2XgdrhjvtkzQvL17&N?>f8fL$!BGi?z=e2QR%PislY4R(m}2~So~SgD z>e|L`#>w$MAYeS4cxG0fvc9tPACB3-qL3Bl%h@HNmi}Y8MjNnyUyS4?T)Fon-M_WM zyM9|a=QOz2Z!QlFh751!b4`H&$F!gCD_!ZBB?Q_VagzqMF;D^-YOl2CA9)KJ(YE$r ztZ3R$WL6__pg?>OJxE4qg=q~|3ZPX_1KV#00NY-r3bxmlD%ei_Gtirtz}7vwaOIt< zaQa<9@2`S0_=tR{i(b@4zmlStD3S?zlcMAT)%oMp`fRRH*unw@$qO0@48c})y@yaG zM#z+y`j27FnWC&^BWZAw7CW#r=9crgT!ZwtE|YIrlUOC)kaK{BtoMf6IP!*O<03N% z5qv0u_n>^%H|Ny`o4`BFs=^L?SQEhmKTIKCl!LG&NJVbL&`9nacYMW=0umZ2%0438 zr-Qg8m3r-~G`TMM1UIg@|F_=Yz7}uJMz5p%V@=J}OaG8bh94^7MIx7X1qk+X{bs6y z+Gq5-zGniY^ZL;TrKwNT7bffrKkXmAcD-Psl|TBt#|81y?MY$A*xH_QJdCThr(FAt zypdu{QudS=Ze?+rwxsEQ{4smVzzfuP?tcyxN%}{xzChtmfiApH3N3retGei#C&9Hj zgb*4_@fkJgHIhr;xkxUdwxKEF7K5(_0VNfR<|-0g;cTv$C=Z(|{1PNIwW*@Ft$Fqw zdBk6ekGaV&MzX$mKs5;H@7191R|x1&p|++gh4jbLZ%S*j19TbXiB$A{y^Km?zCsgP7k@`aa^+>=9^L&!vVl^_!qp!z92z7B;;!FNS` zGv5sBZ?>0jLf9Cx(T7h`a!0acQ3fUT%D?u+^#0UL_Y*1=oIcU+$3whrd~6;cliK-A2#432WV0x!>-Gtw^>Y=35XsA8I~?ZiG1 z-)zkX^{LKer%tl^c9DVy{!@Tk)HrbyS-4f$V!Bi{R}@ME8h467n11{>n*ThG4zuS{ z(mZ>*%Z773ikEwMTy_@F>>)d_Lq2 zMWd6LF7q}zUanbjU`oYk7%lRfsp~RNsEs(R%5(JDcB%iLY0?)nLisC;mHtQi$qD)X z0Z9c8uAoYx-k4NS-jE*vItdMBitR31G*68#;DENLJYR~?TNqoPx_nyOSE>>!>@?$w zp8OQ;A$0lZ+U&V9-zU&pU(P-(0HXPylJCDl6oy|~29?u>Mfz}5j9DmiEyk2hhWiPb zAmYbY%2XZ*bWzQ;=r#gxs=3f+lt;{Kv8Pnz`@&QD{b!T(rk*1vsgEUp37{KybegeE zMo2HTy<@qr;4=&vpbVSsH_{{K2PgdHUTyG5nV)yjGYj@jNSPnwAvQ;?VLKjUhu(6N zmJXSgPgCr5>Fd!)3SeJhS9j<=Hie_k51Lk1flSg!){KvZ)4T)(kBi*_WecepH8w&7 zy$hv)zfI=%e04^v`Kr$M-;g$6C3p?@Gv}*1pZSsnXZ+?dcJD-M$uAsb_IT+v$q>2)P!6Cst3?fyUR=*tf*)sND@T1ro4#<%M}s5o72&>4>!XSiyI=*o zAhw)2H|TA!E&cCm?u4No@hT_50;oNiuA`U`&3P6R;zB+nRzpmPE4{A^nkf_F8|twT zzTQgSI&wYjhOSi>yjPj?DeH-Vux+wj#^w9Z751^<9~`O|NLf!!l{qa^0VLX_Fi)Eh z%O7DyX%pgOd{ODG(`X&u=Mxl64)Rm~1a&my^+HbpxXZX*74D$Wt+1$m9#xEpE?uQd zj{&Onf8e<=O_OxdUv*Kr6uppW^)g-fYh8FqKKYEa=aT2ar9$7L9$*z1U@DpXPf9cg zl5dmo`_lxIhL4VZ`-9A7*2}-KwCL?=hc7S0pl5U>0*ZbQ>7n|4*Cu#dr9AqC=Sh;T z`IGQSmKCz0C#)HZ@Z1_Y;|cvv{jk>^C%KwKBd1Ebc2AO#wVt+WPx%8N*oSrzz0R&V zuriFJ2DVo(|Dya9PdZ=tL=x((91`g|gM2v!dwrpg#lszO{di=A<10&d2l|z)Q#OC4 zn}QG+6XB9x5%)hO2JX5=jm&u~uuEEdzlUd4d4^1($72dT*qt}H?J;6VkN6hHQkCxZ z|2Bq?uj^6W=mCCGbU4q_D1sV?=q!y+WLAzCuedgf*7t_|0oB7eqXOzWTI9p?wAZHY z(8}0x&vJPKdR~7w)l2 zf{DH&ydJMhclBjyCq^fUHpPWvw#D3hGUTrt&RSCkYw_tTEdevN+ zvtKIQt>~5I@$le-76Z^hk*e%ePX|pOVjo-bho%295%AI!1T0NQz+)5m=M?+qTcP5oe@a8eFk)n@^^jNzSU6Y)D^b|;vBm5} zP^Z`lY4aC4fVVFyO;W36E|GcO;VGTy3>f>%CLU&``8Qnw%~1#Gg?p*bU!DH>+_cYY z`6qon2p42AZq9_qidqc5$dn}SV=e@9pQ5u~Yd=f%|1sA?voB{SrxyzP-ktBCn6@4+ zAaR~8Q5g6fvJJhV(`U9rvGr$Gz4Uh(B`UEo5?S z8Ztp%|F1Xi^M2g_hxLFz#ru^xpXvR3r=a^SN?tkodQb~S)&r2UJStKaKy)fWMl=<; zwl!lMasBLcg(Od+B2=02jIVKIgRU3fpq_WT5xTxv@Q^IY4aRC+n5zrdQ>YHNsNYHr z;}t11w_?;PDd!RWe-FQuA5RHkBS*t8QSASl_!SP$2L!Cf$zpJE)SfR$rd%rg3f;oO zMV5-yf3~QGBJ+M@tWpLLZ3))3PCc z4oLBfnEIdckAz=P-i-MF9FUbh_z3!l15kFNP|-)x*yKSZbB$XG0!e-X(uiq`vIPDn z9VG|nC+H)GuKg%|{CfiJ20$Nyv``c`%0fi8zc3I2Xz+C=hBaQ*TOMaP>RwWh5qnqw zH-^LWxn&c(MxUtjjIfD6=4gEymNd6BDQQrL!$=|0dFUK*Ux( zC#-@SRWs_R|DKSy%E$75YW<|RZbqLYs!r&6Icq27xp*aNgw-4hmCcXcXszv5c; zypknRzZ0lwdLHkd!1>sty#4MNRqF?SQdZta)Jj=-5V$!06wL*Ae5=T2{2bb_`r63+ z)ee=__W^Cq&~0s$wvwwaLR(4hC&iu{yf+&J+d|in1;%=sXVq{ie}YsjF4PR6muuu6 zwPp^g<{K9>!^m7yD5w}4#-uB|`+Rv89&@87tkoN#kvGCnksQR-IV=4J)rU_cZAWHc zTJzwEykTn^j4C>*1PN!T=m>JP6>)NTyfHL9AGhng_^Q%XliVnnaL=EL(xgUSue)ddxj z-pW?uDp3(9_;;Ayd`tZWjb!W_EZIcl9k1vk9kmb98u5;?Eu7)5^v_<8sCzUSw2P`$ z*9?5DG%v;Jw}+N)q+AN$H=>r_rDD zEQxZJFzbpB^q@eZN|Fy8$pbfhATY}mL;5

    kik+ta1BbLx`LMD!~PbC={u?#T|ZN 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%0DoJ7`Y&dvhX%g$EznRE>FOV{Wp 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

    v0nS)mNJFvzau2 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

    spWS(L7s*xnL@r(5*Ib4P#f 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 z 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 v^)Xw{*C?Ky_U$YA__gIjge%<=N*2=Zu literal 0 HcmV?d00001 From c5acb5e3d0c1e86b8cc8e66c2cade6052e3aa1f9 Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Thu, 30 Jul 2026 12:51:01 -0400 Subject: [PATCH 06/20] Delete unneeded static inline code. --- ocean/wef/wef.h | 70 ++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index de3352c3e4..d3968878e5 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -133,36 +133,36 @@ typedef struct FishFoodMotion { double orientation; } FishFoodMotion; -static inline double vec_length_squared(FishVec2 v) { +double vec_length_squared(FishVec2 v) { return v.x * v.x + v.y * v.y; } -static inline double vec_length(FishVec2 v) { +double vec_length(FishVec2 v) { return sqrt(vec_length_squared(v)); } -static inline double clamp(double value, double minimum, double maximum) { +double clamp(double value, double minimum, double maximum) { return fmin(maximum, fmax(minimum, value)); } /* Stable wrap to [-pi, pi], identical to movement._wrap_angle. */ -static inline double wrap_angle(double angle) { +double wrap_angle(double angle) { return atan2(sin(angle), cos(angle)); } /* Rotate a vector; add translation separately when transforming a position. */ -static inline FishVec2 rotate(FishVec2 v, double angle) { +FishVec2 rotate(FishVec2 v, double angle) { double c = cos(angle); double s = sin(angle); return (FishVec2){c * v.x - s * v.y, s * v.x + c * v.y}; } -static inline FishVec2 transform_position(FishVec2 local_cm, FishVec2 origin_cm, double angle) { +FishVec2 transform_position(FishVec2 local_cm, FishVec2 origin_cm, double angle) { FishVec2 rotated = rotate(local_cm, angle); return (FishVec2){rotated.x + origin_cm.x, rotated.y + origin_cm.y}; } -static inline FishSensor transform_sensor(FishSensor local, FishVec2 origin_cm, double angle) { +FishSensor transform_sensor(FishSensor local, FishVec2 origin_cm, double angle) { FishSensor world = { .position_cm = transform_position(local.position_cm, origin_cm, angle), .normal = rotate(local.normal, angle), @@ -171,7 +171,7 @@ static inline FishSensor transform_sensor(FishSensor local, FishVec2 origin_cm, } // Biophysics and dynamics -static inline FishMotionProposal propose_motion( +FishMotionProposal propose_motion( const FishMovement* fish, double move_command, double turn_command, @@ -233,7 +233,7 @@ static inline FishMotionProposal propose_motion( return proposal; } -static inline bool motion_collides( +bool motion_collides( FishVec2 proposed_position_cm, double body_radius_cm, const FishMovement* others, @@ -260,7 +260,7 @@ static inline bool motion_collides( * Commit a proposal and enforce a rectangular arena. Orientation always * changes even when translation is blocked, allowing turning in place. */ -static inline bool commit_motion( +bool commit_motion( FishMovement* fish, FishMotionProposal proposal, bool collided, @@ -304,7 +304,7 @@ static inline bool commit_motion( return hit_wall; } -static inline bool point_in_forward_cone( +bool point_in_forward_cone( FishVec2 position_cm, double orientation, FishVec2 target_position_cm, @@ -323,7 +323,7 @@ static inline bool point_in_forward_cone( } // Electrostatic field model -static inline FishMonopole transform_monopole( +FishMonopole transform_monopole( FishMonopole local, FishVec2 position_cm, double orientation, @@ -343,7 +343,7 @@ static inline FishMonopole transform_monopole( * This follows electric.measure_electric_field_original exactly, including * adding eps_m to the distance rather than to squared distance. */ -static inline FishVec2 measure_electric_field( +FishVec2 measure_electric_field( FishVec2 measurement_position_cm, const FishMonopole* monopoles, size_t num_monopoles, @@ -401,7 +401,7 @@ static inline FishVec2 measure_electric_field( return field; } -static inline FishVec2 induce_dipole_moment( +FishVec2 induce_dipole_moment( FishVec2 external_field_vm, double conductor_radius_cm, double conductor_contrast @@ -417,7 +417,7 @@ static inline FishVec2 induce_dipole_moment( } // Field from the original sources plus their four first-order wall images. -static inline FishVec2 measure_electric_field_with_reflections( +FishVec2 measure_electric_field_with_reflections( FishVec2 measurement_position_cm, const FishMonopole* monopoles, size_t num_monopoles, @@ -494,12 +494,12 @@ static inline FishVec2 measure_electric_field_with_reflections( } // Receptor geometry and transduction -static inline double +double project_field(FishVec2 field, FishVec2 sensor_normal) { return field.x * sensor_normal.x + field.y * sensor_normal.y; } -static inline FishSensor +FishSensor radial_sensor(double angle, double body_radius_cm) { FishVec2 normal = {cos(angle), sin(angle)}; FishSensor sensor = { @@ -512,7 +512,7 @@ radial_sensor(double angle, double body_radius_cm) { return sensor; } -static inline double +double uniform_sensor_angle(size_t sensor_index, size_t num_sensors) { return 2.0 * PI_D * (double)sensor_index / (double)num_sensors; } @@ -522,7 +522,7 @@ uniform_sensor_angle(size_t sensor_index, size_t num_sensors) { * receptors span the forward-facing chin region, with the rest covering the * remaining circumference. Pass num_chin=10, num_rest=26 for the default 36. */ -static inline double mormyromast_angle( +double mormyromast_angle( size_t sensor_index, size_t num_chin, size_t num_rest, @@ -548,7 +548,7 @@ static inline double mormyromast_angle( * Sign-preserving logarithmic normalization used by all receptor channels. * Values below threshold map to signed zero and values above maximum saturate. */ -static inline double normalize_sensor_reading( +double normalize_sensor_reading( double reading, double sensor_min, double sensor_max, @@ -663,16 +663,16 @@ typedef struct FishEnv { Client* client; } FishEnv; -static inline double random_uniform(FishEnv* env, double low, double high) { +double random_uniform(FishEnv* env, double low, double high) { double unit = (double)rand_r(&env->rng) / (double)RAND_MAX; return low + (high - low) * unit; } -static inline double random_multiplier(FishEnv* env, double fraction) { +double random_multiplier(FishEnv* env, double fraction) { return random_uniform(env, 1.0 - fraction, 1.0 + fraction); } -static inline void init(FishEnv* env) { +void init(FishEnv* env) { if (env->num_agents <= 0) env->num_agents = 4; if (env->num_agents > MAX_AGENTS) env->num_agents = MAX_AGENTS; if (env->arena_size_cm.x <= 0.0) env->arena_size_cm.x = 70.0; @@ -713,7 +713,7 @@ static inline void init(FishEnv* env) { if (env->rng == 0) env->rng = 1; } -static inline void c_allocate(FishEnv* env) { +void c_allocate(FishEnv* env) { init(env); env->observations = (float*)calloc((size_t)env->num_agents * OBS_SIZE, sizeof(float)); env->actions = (float*)calloc((size_t)env->num_agents * ACTION_SIZE, sizeof(float)); @@ -866,7 +866,7 @@ void compute_observations(FishEnv* env) { } } -static inline bool +bool position_overlaps_agents( const FishEnv* env, FishVec2 position, int count, double radius ) { @@ -885,7 +885,7 @@ position_overlaps_agents( * Matches SensingModel._calculate_corollary_discharge: baselines are computed * once for a representative fish at the arena center, orientation zero. */ -static inline void calibrate_electroreceptors(FishEnv* env) { +void calibrate_electroreceptors(FishEnv* env) { FishVec2 center = { env->arena_size_cm.x * 0.5, env->arena_size_cm.y * 0.5, @@ -941,7 +941,7 @@ static inline void calibrate_electroreceptors(FishEnv* env) { } } -static inline void build_electric_scene(FishEnv* env) { +void build_electric_scene(FishEnv* env) { env->num_intrinsic_sources = 0; env->num_induced_sources = 0; for (int i = 0; i < env->num_agents; i++) { @@ -1370,7 +1370,7 @@ void c_step(FishEnv* env) { } } -static inline Vector2 world_to_screen(const FishEnv* env, FishVec2 point_cm) { +Vector2 world_to_screen(const FishEnv* env, FishVec2 point_cm) { Client* client = env->client; double usable_width = client->window_width - 2.0 * client->margin; double usable_height = client->window_height - 2.0 * client->margin; @@ -1383,7 +1383,7 @@ static inline Vector2 world_to_screen(const FishEnv* env, FishVec2 point_cm) { return result; } -static inline float render_scale(const FishEnv* env) { +float render_scale(const FishEnv* env) { Client* client = env->client; double sx = (client->window_width - 2.0 * client->margin) / env->arena_size_cm.x; @@ -1392,7 +1392,7 @@ static inline float render_scale(const FishEnv* env) { return (float)fmin(sx, sy); } -static inline Client* make_client(void) { +Client* make_client(void) { Client* client = (Client*)calloc(1, sizeof(Client)); client->window_width = 900; client->window_height = 900; @@ -1404,13 +1404,13 @@ static inline Client* make_client(void) { return client; } -static inline Color field_color(double log_strength) { +Color field_color(double log_strength) { double normalized = clamp((log_strength + 8.0) / 7.0, 0.0, 1.0); unsigned char shade = (unsigned char)(205.0 - 95.0 * normalized); return (Color){shade, shade, shade, 190}; } -static inline void render_field( +void render_field( FishEnv* env, const FishMonopole* monopoles, const FishDipole* dipoles @@ -1470,7 +1470,7 @@ static inline void render_field( } } -static inline void c_render(FishEnv* env) { +void c_render(FishEnv* env) { if (env->client == NULL) env->client = make_client(); if (IsKeyPressed(KEY_TAB)) ToggleFullscreen(); if (IsKeyPressed(KEY_F)) { @@ -1634,7 +1634,7 @@ static inline void c_render(FishEnv* env) { EndDrawing(); } -static inline void c_close(FishEnv* env) { +void c_close(FishEnv* env) { if (env->client != NULL) { if (IsWindowReady()) CloseWindow(); free(env->client); @@ -1642,7 +1642,7 @@ static inline void c_close(FishEnv* env) { } } -static inline void free_allocated(FishEnv* env) { +void free_allocated(FishEnv* env) { free(env->observations); free(env->actions); free(env->rewards); From 92910f736c31040d70729c19a724d3bc2d98665a Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Thu, 30 Jul 2026 15:39:24 -0400 Subject: [PATCH 07/20] Minor. --- ocean/wef/wef.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index d3968878e5..145279a15b 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -1220,11 +1220,8 @@ void add_log(FishEnv* env) { env->log.episode_return += env->episode_return; env->log.score += (float)env->food_eaten; env->log.perf += (float)env->food_eaten / (float)env->num_food; - env->log.food_eaten_mean += - (float)env->food_eaten / (float)env->num_agents; - env->log.eod_rate += - (float)env->eod_agent_steps / - (float)(env->tick * env->num_agents); + env->log.food_eaten_mean += (float)env->food_eaten / (float)env->num_agents; + env->log.eod_rate += (float)env->eod_agent_steps / (float)(env->tick * env->num_agents); env->log.collisions_fish += (float)env->collisions_fish; env->log.n += 1.0f; } @@ -1259,6 +1256,8 @@ bool try_eat(FishEnv* env, int agent_idx) { void c_step(FishEnv* env) { env->tick++; + + // Reset agent state variables for (int i = 0; i < env->num_agents; i++) { env->agents[i].was_bitten = false; env->agents[i].ate_food = false; @@ -1266,7 +1265,6 @@ void c_step(FishEnv* env) { env->terminals[i] = 0.0f; } - // Prey update, eating/action processing, then movement. for (int food_idx = 0; food_idx < env->num_food; food_idx++) { if (!env->food[food_idx].active) continue; FishFoodMotion* food = &env->food[food_idx].motion; From eb2f63b250497b68cbc336c0231acb0743a3e915 Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Thu, 30 Jul 2026 16:12:47 -0400 Subject: [PATCH 08/20] Use episode length per standard RL terminology. --- ocean/wef/binding.c | 2 +- ocean/wef/wef.c | 2 +- ocean/wef/wef.h | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ocean/wef/binding.c b/ocean/wef/binding.c index 2c20337016..1a02929435 100644 --- a/ocean/wef/binding.c +++ b/ocean/wef/binding.c @@ -22,7 +22,7 @@ void my_init(Env* env, Dict* kwargs) { env->patch_density = dict_get(kwargs, "patch_density")->value; env->placement_radius_frac = dict_get(kwargs, "placement_radius_frac")->value; env->electric_field_radius_cm = dict_get(kwargs, "electric_field_radius")->value; - env->max_steps = (int)dict_get(kwargs, "max_steps")->value; + env->episode_length = (int)dict_get(kwargs, "episode_length")->value; init(env); } diff --git a/ocean/wef/wef.c b/ocean/wef/wef.c index 7e4195414a..05ccaf35de 100644 --- a/ocean/wef/wef.c +++ b/ocean/wef/wef.c @@ -67,7 +67,7 @@ int main(int argc, char** argv) { .num_agents = 4, .arena_size_cm = {70.0, 70.0}, .electric_field_radius_cm = 15.0, - .max_steps = 4096, + .episode_length = 4096, .rng = (unsigned int)time(NULL), }; c_allocate(&env); diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index 145279a15b..b45811b12c 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -630,7 +630,7 @@ typedef struct FishEnv { float* terminals; int num_agents; int tick; - int max_steps; + int episode_length; unsigned int rng; FishVec2 arena_size_cm; @@ -709,7 +709,7 @@ void init(FishEnv* env) { if (env->electric_field_radius_cm <= 0.0) { env->electric_field_radius_cm = 15.0; } - if (env->max_steps <= 0) env->max_steps = 4096; + if (env->episode_length <= 0) env->episode_length = 4096; if (env->rng == 0) env->rng = 1; } @@ -1361,7 +1361,7 @@ void c_step(FishEnv* env) { build_electric_scene(env); compute_observations(env); - if (env->tick >= env->max_steps || env->food_eaten == env->num_food) { + if (env->tick >= env->episode_length || env->food_eaten == env->num_food) { add_log(env); c_reset(env); for (int i = 0; i < env->num_agents; i++) env->terminals[i] = 1.0f; From 20e8133b562632806fcd484aa1342fb5390c1687 Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Thu, 30 Jul 2026 16:23:48 -0400 Subject: [PATCH 09/20] WEF numerics test outputs before optimizations. --- artifacts/wef/benchmark_baseline.meta | 5 + artifacts/wef/benchmark_baseline.txt | 264 ++++++++ .../wef/benchmark_baseline_fingerprints.txt | 49 ++ config/wef.ini | 2 +- ocean/wef/benchmark_test.c | 632 ++++++++++++++++++ 5 files changed, 951 insertions(+), 1 deletion(-) create mode 100644 artifacts/wef/benchmark_baseline.meta create mode 100644 artifacts/wef/benchmark_baseline.txt create mode 100644 artifacts/wef/benchmark_baseline_fingerprints.txt create mode 100644 ocean/wef/benchmark_test.c diff --git a/artifacts/wef/benchmark_baseline.meta b/artifacts/wef/benchmark_baseline.meta new file mode 100644 index 0000000000..08a88ed666 --- /dev/null +++ b/artifacts/wef/benchmark_baseline.meta @@ -0,0 +1,5 @@ +git_commit=eb2f63b250497b68cbc336c0231acb0743a3e915 +git_commit_short=eb2f63b2 +git_branch=fish +generated_at_utc=2026-07-30T20:14:18Z +baseline_file=artifacts/wef/benchmark_baseline.txt diff --git a/artifacts/wef/benchmark_baseline.txt b/artifacts/wef/benchmark_baseline.txt new file mode 100644 index 0000000000..d9480d2755 --- /dev/null +++ b/artifacts/wef/benchmark_baseline.txt @@ -0,0 +1,264 @@ +# wef benchmark baseline +# generated_at_utc: 2026-07-30T20:14:18Z +# git_branch: fish +# git_commit: eb2f63b250497b68cbc336c0231acb0743a3e915 +# git_commit_short: eb2f63b2 +# git_dirty_paths: 7 +# note: baseline captured from working tree; dirty_paths>0 means uncommitted changes were present +# command: ./build.sh wef --fast && ./wef_benchmark_test +# +# dirty files: +# M build.sh +# M config/wef.ini +# M pufferlib/pufferl.py +# M pufferlib/sweep.py +# M wef +# ?? artifacts/ +# ?? ocean/wef/benchmark_test.c +# ?? wef_benchmark_test +# +# --- benchmark stdout --- +wef numerical stability (C) + + seeds=0,1,2 steps=100 num_agents=4 + +SPS benchmark (config/wef.ini [vec], env-only): + + total_agents=4096 num_buffers=8 num_threads=8 + num_agents=4 num_envs=1024 agents_per_buffer=512 workers_per_buffer=1 + vec_steps=200 total_steps=819200 (flattened: total_agents * vec_steps) + elapsed=8.978s + SPS=91243.1 (total env steps/sec, flattened over agents) + +------------------------------------------------------------ +seed=0 +------------------------------------------------------------ + + steps=100 num_agents=4 num_food=16 env_rng=2738958700 action_seed=0 + obs shape=(101, 4, 110) + + observations finite=true + final observation sum=-3.3630700759240426 + final observation min/max=-1 / 1 + reward sum=-9.5 + cumulative rewards per fish=[0, -9.5, 0, 0] + any terminal=false + + final tick=100 + food_eaten=0 + collisions_fish=0 + eod_agent_steps=205 + episode_return=-9.5 + rng=2841365603 + + obs_fnv1a=0x8bae40d98fdbe291 + rewards_fnv1a=0xd0c33359e77a3548 + actions_fnv1a=0xf9df9acdb0c11660 + state_fnv1a=0x86d04b94c0a1e3dc + + final environment state (agents): + + fish 0: pos=(44.089672623090209, 31.740410373388194) + ori=0.61627496774249191 size=0.16660249566966784 + lin_vel=0 ang_vel=0 + + fish 1: pos=(69, 24.135396533835433) + ori=-0.96256237836517444 size=0.40482557583824991 + lin_vel=0 ang_vel=0 + + fish 2: pos=(47.635207470703399, 22.778119309826167) + ori=-1.006784802522424 size=0.28482524877638798 + lin_vel=0 ang_vel=0 + + fish 3: pos=(11.160889062061571, 8.5062249553836171) + ori=-3.0213604860540171 size=0.23297507233590589 + lin_vel=0 ang_vel=0 + + final environment state (active food): + + food 0: pos=(61.100243283948046, 1.6528113845981711) + food 1: pos=(15.209954653498695, 65.709089364721024) + food 2: pos=(64.316326586676908, 46.935781909588627) + food 3: pos=(15.696602173008307, 55.26373251586395) + food 4: pos=(43.863100085343746, 19.143855953190407) + food 5: pos=(60.970455189687414, 6.0645934641662027) + food 6: pos=(69.384816246752081, 29.629349103024857) + food 7: pos=(38.805420528541049, 50.649269409780054) + food 8: pos=(6.427817510640164, 9.592973314967459) + food 9: pos=(65.601610855945211, 68.19774818522751) + food 10: pos=(55.308186554027813, 26.793538423624604) + food 11: pos=(64.91931919703228, 54.413622442825528) + food 12: pos=(61.795718153843531, 30.770046562314988) + food 13: pos=(53.931358113852959, 40.33655243941422) + food 14: pos=(22.545241472565216, 48.329400633615158) + food 15: pos=(8.7664516776643939, 27.753566772562248) + + active_food_count=16 / 16 + + final observation (per fish, first 8 channels): + + fish 0: [-0.00391528, -0.0114805, -0.0175863, -0.020256, -0.0206636, -0.0215004, -0.0238886, -0.023823, ...] + fish 1: [-0.0581866, -0.0559637, -0.0533815, -0.0507367, -0.0484739, -0.042852, -0.0422468, -0.0338735, ...] + fish 2: [0.771111, 0.802314, 0.827758, 0.845998, 0.857004, 0.865008, 0.875223, 0.876705, ...] + fish 3: [-0.152495, -0.15608, -0.160852, -0.159335, -0.153452, -0.149295, -0.134726, -0.123116, ...] + + final rewards: [0, -0.5, 0, 0] + final terminals: [0, 0, 0, 0] + + seed=0 RESULT: PASS (deterministic, finite) + +------------------------------------------------------------ +seed=1 +------------------------------------------------------------ + + steps=100 num_agents=4 num_food=16 env_rng=1 action_seed=1 + obs shape=(101, 4, 110) + + observations finite=true + final observation sum=-10.321332900901325 + final observation min/max=-1 / 1 + reward sum=-75 + cumulative rewards per fish=[-45, 0, -30, 0] + any terminal=false + + final tick=100 + food_eaten=0 + collisions_fish=0 + eod_agent_steps=205 + episode_return=-75 + rng=1750653724 + + obs_fnv1a=0x1d265745fc8815bd + rewards_fnv1a=0x5819b5fec9a26de5 + actions_fnv1a=0x97ef3992d671384c + state_fnv1a=0x32496ba61e9ee44e + + final environment state (agents): + + fish 0: pos=(69, 45.280557434120958) + ori=1.1356759730884418 size=0.23547164547977581 + lin_vel=0 ang_vel=0 + + fish 1: pos=(55.370906407012114, 29.357932876721286) + ori=-0.19604108976150533 size=0.27439800942055786 + lin_vel=0 ang_vel=0 + + fish 2: pos=(52.049178359732814, 1) + ori=-1.7521209187323505 size=0.90470587224918686 + lin_vel=0 ang_vel=0 + + fish 3: pos=(53.756216440729368, 14.322839822618286) + ori=-0.66538552831311626 size=0.66652670114605073 + lin_vel=0 ang_vel=0 + + final environment state (active food): + + food 0: pos=(62.168258317824574, 20.754343499780795) + food 1: pos=(63.10364944539203, 65.371231294875614) + food 2: pos=(51.208794932444022, 39.877958460654114) + food 3: pos=(64.222610101207451, 53.619230903507784) + food 4: pos=(57.436995826399418, 51.297968179591919) + food 5: pos=(66.482261175514324, 11.575064860086453) + food 6: pos=(59.131060293471002, 31.456316565841586) + food 7: pos=(54.230623675617686, 22.860405353298599) + food 8: pos=(31.149168895161324, 19.457772504285803) + food 9: pos=(8.3962075637635802, 44.556320661006644) + food 10: pos=(39.85401997335908, 20.574294370866518) + food 11: pos=(28.356913639398719, 18.505263760921203) + food 12: pos=(66.082089657933494, 48.665407071199922) + food 13: pos=(45.738336264965277, 40.033548604712607) + food 14: pos=(59.420321760429218, 42.698563622636051) + food 15: pos=(66.811777398368235, 22.969861446400106) + + active_food_count=16 / 16 + + final observation (per fish, first 8 channels): + + fish 0: [-0.627909, -0.668842, -0.690693, -0.703912, -0.716281, -0.718961, -0.722274, -0.732389, ...] + fish 1: [-0.0694918, -0.0995323, -0.124421, -0.145789, -0.160383, -0.176343, -0.186363, -0.195, ...] + fish 2: [-0, -0, -0, -0, -0, -0.00222547, -0.00397188, -0.00647457, ...] + fish 3: [-0.8544, -0.837681, -0.830015, -0.809009, -0.788843, -0.753145, -0.688407, 0.649056, ...] + + final rewards: [-0.5, 0, -0.5, 0] + final terminals: [0, 0, 0, 0] + + seed=1 RESULT: PASS (deterministic, finite) + +------------------------------------------------------------ +seed=2 +------------------------------------------------------------ + + steps=100 num_agents=4 num_food=16 env_rng=2 action_seed=2 + obs shape=(101, 4, 110) + + observations finite=true + final observation sum=-22.531803305260837 + final observation min/max=-1 / 1 + reward sum=-96.5 + cumulative rewards per fish=[-36, -27.5, -43, 10] + any terminal=false + + final tick=100 + food_eaten=1 + collisions_fish=0 + eod_agent_steps=203 + episode_return=-96.5 + rng=1618446755 + + obs_fnv1a=0x6cb65ad4d8d340d6 + rewards_fnv1a=0x331e9aa8dcf9adfb + actions_fnv1a=0xd13e03727e5a0fd4 + state_fnv1a=0x36f1278d3c62e58c + + final environment state (agents): + + fish 0: pos=(69, 6.4331918080723174) + ori=-0.17375002263874004 size=0.63682261790932282 + lin_vel=0 ang_vel=0 + + fish 1: pos=(69, 25.4575618232106) + ori=-0.40986130928742176 size=0.12045271514004688 + lin_vel=0 ang_vel=0 + + fish 2: pos=(1, 1) + ori=-2.4013747392430509 size=0.55743748627483725 + lin_vel=0 ang_vel=0 + + fish 3: pos=(61.933990241272667, 24.903524666643207) + ori=0.48777512486808 size=0.78973966873704438 + lin_vel=0 ang_vel=0 + + final environment state (active food): + + food 0: pos=(36.221265367335299, 44.009018062618104) + food 1: pos=(45.620254997918501, 3.1483139531446218) + food 2: pos=(35.006656406916051, 13.307444310424589) + food 3: pos=(59.91342380173198, 42.2166241156946) + food 4: pos=(51.038209712616272, 42.150625885534396) + food 5: pos=(64.836561584303425, 18.997652106451643) + food 6: pos=(55.722777073142481, 27.307328450170964) + food 7: pos=(28.998493933583841, 52.484919709379277) + food 8: pos=(18.289648493886759, 65.602999164537991) + food 9: pos=(17.959533574972085, 45.615751429282014) + food 10: pos=(27.369579606395948, 58.790777222621621) + food 11: pos=(63.757841961345555, 53.594225963388681) + food 12: pos=(28.586943116312355, 49.829843202526611) + food 13: pos=(25.231499818727141, 53.246528866349969) + food 14: pos=(50.292553440803921, 51.806165399870906) + + active_food_count=15 / 16 + + final observation (per fish, first 8 channels): + + fish 0: [0.715322, 0.732516, 0.749536, 0.762829, 0.771446, 0.783503, 0.787142, 0.785064, ...] + fish 1: [-0.973832, -0.983688, -0.994437, -1, -1, -1, -1, -1, ...] + fish 2: [0.558673, 0.545383, 0.52862, 0.515518, 0.507381, 0.499087, 0.480806, 0.46613, ...] + fish 3: [-0.302664, -0.304568, -0.305575, -0.302051, -0.297841, -0.293376, -0.286494, -0.276958, ...] + + final rewards: [-0.5, -0.5, -0.5, 0] + final terminals: [0, 0, 0, 0] + + seed=2 RESULT: PASS (deterministic, finite) + +============================================================ +OVERALL RESULT: PASS (all seeds deterministic, finite) diff --git a/artifacts/wef/benchmark_baseline_fingerprints.txt b/artifacts/wef/benchmark_baseline_fingerprints.txt new file mode 100644 index 0000000000..ab2093293b --- /dev/null +++ b/artifacts/wef/benchmark_baseline_fingerprints.txt @@ -0,0 +1,49 @@ +# Compact deterministic fingerprints for wef benchmark +# Compare these after env changes (ignore SPS — wall-time varies). + +# git_commit=eb2f63b250497b68cbc336c0231acb0743a3e915 +# git_commit_short=eb2f63b2 +# git_branch=fish +# generated_at_utc=2026-07-30T20:14:18Z +# baseline_file=artifacts/wef/benchmark_baseline.txt + +overall_result=PASS (all seeds deterministic, finite) + +[seed 0] +action_seed=0 +env_rng=2738958700 +reward sum=-9.5 +final observation sum=-3.3630700759240426 +food_eaten=0 +episode_return=-9.5 +rng=2841365603 +obs_fnv1a=0x8bae40d98fdbe291 +rewards_fnv1a=0xd0c33359e77a3548 +actions_fnv1a=0xf9df9acdb0c11660 +state_fnv1a=0x86d04b94c0a1e3dc + +[seed 1] +action_seed=1 +env_rng=1 +reward sum=-75 +final observation sum=-10.321332900901325 +food_eaten=0 +episode_return=-75 +rng=1750653724 +obs_fnv1a=0x1d265745fc8815bd +rewards_fnv1a=0x5819b5fec9a26de5 +actions_fnv1a=0x97ef3992d671384c +state_fnv1a=0x32496ba61e9ee44e + +[seed 2] +action_seed=2 +env_rng=2 +reward sum=-96.5 +final observation sum=-22.531803305260837 +food_eaten=1 +episode_return=-96.5 +rng=1618446755 +obs_fnv1a=0x6cb65ad4d8d340d6 +rewards_fnv1a=0x331e9aa8dcf9adfb +actions_fnv1a=0xd13e03727e5a0fd4 +state_fnv1a=0x36f1278d3c62e58c diff --git a/config/wef.ini b/config/wef.ini index be7e49d20d..0cba3648a1 100644 --- a/config/wef.ini +++ b/config/wef.ini @@ -30,7 +30,7 @@ patch_radius_std = 1.5 patch_density = 0.001 placement_radius_frac = 0.75 electric_field_radius = 15 -max_steps = 4096 +episode_length = 4096 [sweep] diff --git a/ocean/wef/benchmark_test.c b/ocean/wef/benchmark_test.c new file mode 100644 index 0000000000..056d5f1258 --- /dev/null +++ b/ocean/wef/benchmark_test.c @@ -0,0 +1,632 @@ +/* + * Deterministic numerical-stability harness for wef. + * + * Creates a 4-fish arena, steps with seeded random actions, and reports + * observations plus internal environment state. For each seed in {0,1,2}, + * runs the trajectory twice and asserts bit-identical results so biophysics + * approximations can be checked against this baseline later without changing + * the true physics. + * + * Build (standalone wef also builds this binary): + * ./build.sh wef --fast + * ./wef_benchmark_test + * + * Manual build: + * clang -O2 -I./raylib-5.5_linux_amd64/include -I./src -I./vendor \ + * -I./ocean/wef ocean/wef/benchmark_test.c \ + * raylib-5.5_linux_amd64/lib/libraylib.a -lGL -lm -lpthread -fopenmp \ + * -DPLATFORM_DESKTOP -o wef_benchmark_test + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "wef.h" + +#define FNV_OFFSET 14695981039346656037ULL +#define FNV_PRIME 1099511628211ULL + +/* Stability trajectory (single env, small + deterministic). */ +#define NUM_FISH 4 +#define NUM_STEPS 100 +#define NUM_FOOD 16 +#define NUM_TEST_SEEDS 3 +static const unsigned int TEST_SEEDS[NUM_TEST_SEEDS] = {0u, 1u, 2u}; + +/* + * SPS benchmark sizing from config/wef.ini: + * [vec] + * total_agents = 4096 + * num_buffers = 8 + * num_threads = 8 + * [env] + * num_agents = 4 + * + * Layout matches StaticVec / my_vec_init: + * num_envs = total_agents / num_agents = 1024 + * agents_per_buffer = total_agents / num_buffers = 512 + * envs_per_buffer ≈ 512 / 4 = 128 + * workers_per_buffer = num_threads / num_buffers = 1 + * + * SPS = total environment steps / wall time, flattened over agents: + * steps_counted = total_agents * vec_steps + * SPS = steps_counted / elapsed + * (Same units as puffer train: global_step += total_agents each env step.) + */ +#define TOTAL_AGENTS 4096 +#define NUM_BUFFERS 8 +#define NUM_THREADS 8 +#define NUM_ENVS (TOTAL_AGENTS / NUM_FISH) +#define AGENTS_PER_BUFFER (TOTAL_AGENTS / NUM_BUFFERS) +#define WORKERS_PER_BUFFER (NUM_THREADS / NUM_BUFFERS) +/* Outer vec ticks. Flattened steps timed = TOTAL_AGENTS * SPS_STEPS. + * 200 * 4096 ≈ 0.8M steps — enough for a stable reading. */ +#define SPS_STEPS 200 + +typedef struct TrajectorySnapshot { + float observations[(NUM_STEPS + 1) * NUM_FISH * OBS_SIZE]; + float rewards[NUM_STEPS * NUM_FISH]; + float terminals[NUM_STEPS * NUM_FISH]; + float actions[NUM_STEPS * NUM_FISH * ACTION_SIZE]; + double agent_x[NUM_STEPS + 1][NUM_FISH]; + double agent_y[NUM_STEPS + 1][NUM_FISH]; + double agent_orientation[NUM_STEPS + 1][NUM_FISH]; + double agent_size[NUM_STEPS + 1][NUM_FISH]; + double agent_lin_vel[NUM_STEPS + 1][NUM_FISH]; + double agent_ang_vel[NUM_STEPS + 1][NUM_FISH]; + int food_active[NUM_STEPS + 1][MAX_FOOD]; + double food_x[NUM_STEPS + 1][MAX_FOOD]; + double food_y[NUM_STEPS + 1][MAX_FOOD]; + int tick[NUM_STEPS + 1]; + int food_eaten[NUM_STEPS + 1]; + int collisions_fish[NUM_STEPS + 1]; + int eod_agent_steps[NUM_STEPS + 1]; + float episode_return[NUM_STEPS + 1]; + unsigned int rng[NUM_STEPS + 1]; + int num_food; +} TrajectorySnapshot; + +static float random_action(unsigned int* rng) { + return 2.0f * (float)rand_r(rng) / (float)RAND_MAX - 1.0f; +} + +static uint64_t fnv1a_update(uint64_t hash, const void* data, size_t nbytes) { + const unsigned char* bytes = (const unsigned char*)data; + for (size_t i = 0; i < nbytes; i++) { + hash ^= (uint64_t)bytes[i]; + hash *= FNV_PRIME; + } + return hash; +} + +static uint64_t hash_bytes(const void* data, size_t nbytes) { + return fnv1a_update(FNV_OFFSET, data, nbytes); +} + +static bool floats_identical(const float* a, const float* b, size_t n) { + return memcmp(a, b, n * sizeof(float)) == 0; +} + +static bool doubles_identical(const double* a, const double* b, size_t n) { + return memcmp(a, b, n * sizeof(double)) == 0; +} + +static bool all_finite_float(const float* values, size_t n) { + for (size_t i = 0; i < n; i++) { + if (!isfinite((double)values[i])) return false; + } + return true; +} + +/* init() rewrites rng==0 to 1, so map seed 0 to a distinct non-zero value. */ +static unsigned int env_rng_from_seed(unsigned int seed) { + return seed == 0u ? 0xA341316Cu : seed; +} + +static void configure_env(FishEnv* env, unsigned int seed) { + memset(env, 0, sizeof(*env)); + env->num_agents = NUM_FISH; + env->arena_size_cm = (FishVec2){70.0, 70.0}; + env->min_arena_size_cm = (FishVec2){70.0, 70.0}; + env->max_arena_size_cm = (FishVec2){70.0, 70.0}; + env->food_distribution = FOOD_UNIFORM; + env->configured_num_food = NUM_FOOD; + env->fixed_num_patches = 4; + env->patch_radius_cm = 6.0; + env->patch_radius_std_cm = 1.5; + env->patch_density = 0.001; + env->placement_radius_frac = 0.75; + env->electric_field_radius_cm = 15.0; + env->episode_length = 4096; + env->rng = env_rng_from_seed(seed); +} + +static void capture_state(const FishEnv* env, TrajectorySnapshot* snap, int frame) { + snap->tick[frame] = env->tick; + snap->food_eaten[frame] = env->food_eaten; + snap->collisions_fish[frame] = env->collisions_fish; + snap->eod_agent_steps[frame] = env->eod_agent_steps; + snap->episode_return[frame] = env->episode_return; + snap->rng[frame] = env->rng; + snap->num_food = env->num_food; + + for (int i = 0; i < NUM_FISH; i++) { + const FishAgentState* agent = &env->agents[i]; + snap->agent_x[frame][i] = agent->movement.position_cm.x; + snap->agent_y[frame][i] = agent->movement.position_cm.y; + snap->agent_orientation[frame][i] = agent->movement.orientation; + snap->agent_size[frame][i] = agent->size; + snap->agent_lin_vel[frame][i] = agent->movement.linear_velocity; + snap->agent_ang_vel[frame][i] = agent->movement.angular_velocity; + } + + for (int i = 0; i < env->num_food; i++) { + snap->food_active[frame][i] = env->food[i].active ? 1 : 0; + snap->food_x[frame][i] = env->food[i].motion.position_cm.x; + snap->food_y[frame][i] = env->food[i].motion.position_cm.y; + } + + size_t obs_offset = (size_t)frame * NUM_FISH * OBS_SIZE; + memcpy( + snap->observations + obs_offset, + env->observations, + (size_t)NUM_FISH * OBS_SIZE * sizeof(float) + ); +} + +static double timespec_seconds(struct timespec t0, struct timespec t1) { + return (double)(t1.tv_sec - t0.tv_sec) + + (double)(t1.tv_nsec - t0.tv_nsec) * 1e-9; +} + +typedef struct SpsResult { + double sps; /* Flattened env steps/sec: total_agents * vec_steps / elapsed. */ + double elapsed_s; + long long total_steps; /* Flattened: total_agents * vec_steps. */ + int num_envs; + int total_agents; + int num_buffers; + int num_threads; + int vec_steps; +} SpsResult; + +/* + * Pure step loop matching train's StaticVec layout from wef.ini [vec]: + * total_agents / num_agents envs, packed into num_buffers, stepped with + * OpenMP the same way as vecenv (parallel buffers, workers per buffer). + * Snapshotting and policy forward are excluded. + * + * SPS counts environment steps flattened over agents (each agent slot + * advances once per vec tick). + */ +static SpsResult measure_sps(void) { + SpsResult result = {0}; + result.num_envs = NUM_ENVS; + result.total_agents = TOTAL_AGENTS; + result.num_buffers = NUM_BUFFERS; + result.num_threads = NUM_THREADS; + result.vec_steps = SPS_STEPS; + + FishEnv* envs = (FishEnv*)calloc((size_t)NUM_ENVS, sizeof(FishEnv)); + unsigned int* action_rngs = + (unsigned int*)calloc((size_t)NUM_ENVS, sizeof(unsigned int)); + int buffer_env_starts[NUM_BUFFERS]; + int buffer_env_counts[NUM_BUFFERS]; + if (envs == NULL || action_rngs == NULL) { + fprintf(stderr, "failed to allocate SPS envs\n"); + free(envs); + free(action_rngs); + return result; + } + + for (int e = 0; e < NUM_ENVS; e++) { + /* Distinct seeds per env, same idea as my_vec_init's env index seed. */ + configure_env(&envs[e], (unsigned int)(e + 1)); + /* Training defaults from wef.ini [env]. */ + envs[e].configured_num_food = 64; + envs[e].food_distribution = FOOD_RANDOM; + c_allocate(&envs[e]); + c_reset(&envs[e]); + action_rngs[e] = (unsigned int)e * 0x9e3779b9u + 1u; + } + + /* Pack envs into buffers exactly like my_vec_init in src/vecenv.h. */ + { + int buf = 0; + int buf_agents = 0; + buffer_env_starts[0] = 0; + buffer_env_counts[0] = 0; + for (int i = 1; i < NUM_BUFFERS; i++) { + buffer_env_starts[i] = 0; + buffer_env_counts[i] = 0; + } + for (int i = 0; i < NUM_ENVS; i++) { + buf_agents += envs[i].num_agents; + buffer_env_counts[buf]++; + if (buf_agents >= AGENTS_PER_BUFFER && buf < NUM_BUFFERS - 1) { + buf++; + buffer_env_starts[buf] = i + 1; + buffer_env_counts[buf] = 0; + buf_agents = 0; + } + } + } + + struct timespec t0, t1; + clock_gettime(CLOCK_MONOTONIC, &t0); + for (int t = 0; t < SPS_STEPS; t++) { + /* One thread group per buffer (matches buffer managers in vecenv). */ + #pragma omp parallel for schedule(static) num_threads(NUM_BUFFERS) + for (int buf = 0; buf < NUM_BUFFERS; buf++) { + int env_start = buffer_env_starts[buf]; + int env_count = buffer_env_counts[buf]; + int workers = WORKERS_PER_BUFFER; + if (workers < 1) workers = 1; + /* Within a buffer: OMP over envs (num_threads/num_buffers workers). */ + #pragma omp parallel for schedule(static) num_threads(workers) \ + if(workers > 1) + for (int i = env_start; i < env_start + env_count; i++) { + FishEnv* env = &envs[i]; + for (int a = 0; a < NUM_FISH; a++) { + float* action = env->actions + a * ACTION_SIZE; + for (int k = 0; k < ACTION_SIZE; k++) { + action[k] = random_action(&action_rngs[i]); + } + } + c_step(env); + } + } + } + clock_gettime(CLOCK_MONOTONIC, &t1); + + for (int e = 0; e < NUM_ENVS; e++) { + free_allocated(&envs[e]); + } + free(envs); + free(action_rngs); + + result.elapsed_s = timespec_seconds(t0, t1); + result.total_steps = (long long)TOTAL_AGENTS * (long long)SPS_STEPS; + if (result.elapsed_s > 0.0) { + result.sps = (double)result.total_steps / result.elapsed_s; + } + return result; +} + +static void run_trajectory(TrajectorySnapshot* snap, unsigned int seed) { + FishEnv env; + configure_env(&env, seed); + c_allocate(&env); + c_reset(&env); + + unsigned int action_rng = seed; + capture_state(&env, snap, 0); + + for (int t = 0; t < NUM_STEPS; t++) { + for (int i = 0; i < NUM_FISH; i++) { + float* action = env.actions + i * ACTION_SIZE; + for (int a = 0; a < ACTION_SIZE; a++) { + action[a] = random_action(&action_rng); + } + size_t act_offset = + (size_t)t * NUM_FISH * ACTION_SIZE + (size_t)i * ACTION_SIZE; + memcpy(snap->actions + act_offset, action, ACTION_SIZE * sizeof(float)); + } + + c_step(&env); + + size_t step_offset = (size_t)t * NUM_FISH; + memcpy( + snap->rewards + step_offset, + env.rewards, + (size_t)NUM_FISH * sizeof(float) + ); + memcpy( + snap->terminals + step_offset, + env.terminals, + (size_t)NUM_FISH * sizeof(float) + ); + capture_state(&env, snap, t + 1); + } + + free_allocated(&env); +} + +static bool snapshots_equal(const TrajectorySnapshot* a, const TrajectorySnapshot* b) { + size_t obs_n = (size_t)(NUM_STEPS + 1) * NUM_FISH * OBS_SIZE; + size_t step_n = (size_t)NUM_STEPS * NUM_FISH; + size_t act_n = (size_t)NUM_STEPS * NUM_FISH * ACTION_SIZE; + + if (!floats_identical(a->observations, b->observations, obs_n)) return false; + if (!floats_identical(a->rewards, b->rewards, step_n)) return false; + if (!floats_identical(a->terminals, b->terminals, step_n)) return false; + if (!floats_identical(a->actions, b->actions, act_n)) return false; + + for (int frame = 0; frame <= NUM_STEPS; frame++) { + if (a->tick[frame] != b->tick[frame]) return false; + if (a->food_eaten[frame] != b->food_eaten[frame]) return false; + if (a->collisions_fish[frame] != b->collisions_fish[frame]) return false; + if (a->eod_agent_steps[frame] != b->eod_agent_steps[frame]) return false; + if (a->rng[frame] != b->rng[frame]) return false; + if (memcmp(&a->episode_return[frame], &b->episode_return[frame], sizeof(float)) != 0) { + return false; + } + if (!doubles_identical(a->agent_x[frame], b->agent_x[frame], NUM_FISH)) { + return false; + } + if (!doubles_identical(a->agent_y[frame], b->agent_y[frame], NUM_FISH)) { + return false; + } + if (!doubles_identical( + a->agent_orientation[frame], b->agent_orientation[frame], NUM_FISH + )) { + return false; + } + if (!doubles_identical(a->agent_size[frame], b->agent_size[frame], NUM_FISH)) { + return false; + } + if (!doubles_identical( + a->agent_lin_vel[frame], b->agent_lin_vel[frame], NUM_FISH + )) { + return false; + } + if (!doubles_identical( + a->agent_ang_vel[frame], b->agent_ang_vel[frame], NUM_FISH + )) { + return false; + } + for (int i = 0; i < a->num_food; i++) { + if (a->food_active[frame][i] != b->food_active[frame][i]) return false; + if (memcmp(&a->food_x[frame][i], &b->food_x[frame][i], sizeof(double)) != 0) { + return false; + } + if (memcmp(&a->food_y[frame][i], &b->food_y[frame][i], sizeof(double)) != 0) { + return false; + } + } + } + return true; +} + +static void report_sps(const SpsResult* sps) { + printf("SPS benchmark (config/wef.ini [vec], env-only):\n"); + printf("\n"); + printf(" total_agents=%d num_buffers=%d num_threads=%d\n", + sps->total_agents, sps->num_buffers, sps->num_threads); + printf(" num_agents=%d num_envs=%d agents_per_buffer=%d workers_per_buffer=%d\n", + NUM_FISH, sps->num_envs, AGENTS_PER_BUFFER, WORKERS_PER_BUFFER); + printf(" vec_steps=%d total_steps=%lld (flattened: total_agents * vec_steps)\n", + sps->vec_steps, sps->total_steps); + printf(" elapsed=%.3fs\n", sps->elapsed_s); + printf(" SPS=%.1f (total env steps/sec, flattened over agents)\n", sps->sps); +} + +static void report_trajectory(const TrajectorySnapshot* snap, unsigned int seed) { + const size_t obs_n = (size_t)(NUM_STEPS + 1) * NUM_FISH * OBS_SIZE; + const size_t rew_n = (size_t)NUM_STEPS * NUM_FISH; + const size_t act_n = (size_t)NUM_STEPS * NUM_FISH * ACTION_SIZE; + const float* final_obs = + snap->observations + (size_t)NUM_STEPS * NUM_FISH * OBS_SIZE; + const float* final_rewards = + snap->rewards + (size_t)(NUM_STEPS - 1) * NUM_FISH; + const float* final_terminals = + snap->terminals + (size_t)(NUM_STEPS - 1) * NUM_FISH; + + double obs_sum = 0.0; + double obs_min = final_obs[0]; + double obs_max = final_obs[0]; + for (size_t i = 0; i < (size_t)NUM_FISH * OBS_SIZE; i++) { + double v = (double)final_obs[i]; + obs_sum += v; + if (v < obs_min) obs_min = v; + if (v > obs_max) obs_max = v; + } + + double reward_sum = 0.0; + double cumulative[NUM_FISH] = {0}; + bool any_terminal = false; + for (int t = 0; t < NUM_STEPS; t++) { + for (int i = 0; i < NUM_FISH; i++) { + float r = snap->rewards[t * NUM_FISH + i]; + float d = snap->terminals[t * NUM_FISH + i]; + reward_sum += (double)r; + cumulative[i] += (double)r; + if (d != 0.0f) any_terminal = true; + } + } + + uint64_t obs_hash = hash_bytes(snap->observations, obs_n * sizeof(float)); + uint64_t rew_hash = hash_bytes(snap->rewards, rew_n * sizeof(float)); + uint64_t act_hash = hash_bytes(snap->actions, act_n * sizeof(float)); + uint64_t state_hash = FNV_OFFSET; + state_hash = fnv1a_update(state_hash, snap->agent_x, sizeof(snap->agent_x)); + state_hash = fnv1a_update(state_hash, snap->agent_y, sizeof(snap->agent_y)); + state_hash = fnv1a_update( + state_hash, snap->agent_orientation, sizeof(snap->agent_orientation) + ); + state_hash = fnv1a_update(state_hash, snap->agent_size, sizeof(snap->agent_size)); + state_hash = fnv1a_update(state_hash, snap->food_x, sizeof(snap->food_x)); + state_hash = fnv1a_update(state_hash, snap->food_y, sizeof(snap->food_y)); + state_hash = fnv1a_update(state_hash, snap->food_active, sizeof(snap->food_active)); + state_hash = fnv1a_update(state_hash, snap->tick, sizeof(snap->tick)); + state_hash = fnv1a_update(state_hash, snap->rng, sizeof(snap->rng)); + + printf("------------------------------------------------------------\n"); + printf("seed=%u\n", seed); + printf("------------------------------------------------------------\n"); + printf("\n"); + printf(" steps=%d num_agents=%d num_food=%d env_rng=%u action_seed=%u\n", + NUM_STEPS, NUM_FISH, snap->num_food, env_rng_from_seed(seed), seed); + printf(" obs shape=(%d, %d, %d)\n", NUM_STEPS + 1, NUM_FISH, OBS_SIZE); + + printf("\n"); + printf(" observations finite=%s\n", + all_finite_float(snap->observations, obs_n) ? "true" : "false"); + printf(" final observation sum=%.17g\n", obs_sum); + printf(" final observation min/max=%.17g / %.17g\n", obs_min, obs_max); + printf(" reward sum=%.17g\n", reward_sum); + printf(" cumulative rewards per fish=["); + for (int i = 0; i < NUM_FISH; i++) { + printf("%s%.17g", i ? ", " : "", cumulative[i]); + } + printf("]\n"); + printf(" any terminal=%s\n", any_terminal ? "true" : "false"); + + printf("\n"); + printf(" final tick=%d\n", snap->tick[NUM_STEPS]); + printf(" food_eaten=%d\n", snap->food_eaten[NUM_STEPS]); + printf(" collisions_fish=%d\n", snap->collisions_fish[NUM_STEPS]); + printf(" eod_agent_steps=%d\n", snap->eod_agent_steps[NUM_STEPS]); + printf(" episode_return=%.17g\n", (double)snap->episode_return[NUM_STEPS]); + printf(" rng=%u\n", snap->rng[NUM_STEPS]); + + printf("\n"); + printf(" obs_fnv1a=0x%016llx\n", (unsigned long long)obs_hash); + printf(" rewards_fnv1a=0x%016llx\n", (unsigned long long)rew_hash); + printf(" actions_fnv1a=0x%016llx\n", (unsigned long long)act_hash); + printf(" state_fnv1a=0x%016llx\n", (unsigned long long)state_hash); + + printf("\n"); + printf(" final environment state (agents):\n"); + printf("\n"); + for (int i = 0; i < NUM_FISH; i++) { + printf( + " fish %d: pos=(%.17g, %.17g)\n" + " ori=%.17g size=%.17g\n" + " lin_vel=%.17g ang_vel=%.17g\n", + i, + snap->agent_x[NUM_STEPS][i], + snap->agent_y[NUM_STEPS][i], + snap->agent_orientation[NUM_STEPS][i], + snap->agent_size[NUM_STEPS][i], + snap->agent_lin_vel[NUM_STEPS][i], + snap->agent_ang_vel[NUM_STEPS][i] + ); + printf("\n"); + } + + printf(" final environment state (active food):\n"); + printf("\n"); + int active_food = 0; + for (int i = 0; i < snap->num_food; i++) { + if (!snap->food_active[NUM_STEPS][i]) continue; + printf( + " food %d: pos=(%.17g, %.17g)\n", + i, + snap->food_x[NUM_STEPS][i], + snap->food_y[NUM_STEPS][i] + ); + active_food++; + } + printf("\n"); + printf(" active_food_count=%d / %d\n", active_food, snap->num_food); + + printf("\n"); + printf(" final observation (per fish, first 8 channels):\n"); + printf("\n"); + for (int i = 0; i < NUM_FISH; i++) { + const float* obs = final_obs + i * OBS_SIZE; + printf(" fish %d: [", i); + for (int c = 0; c < 8; c++) { + printf("%s%.6g", c ? ", " : "", (double)obs[c]); + } + printf(", ...]\n"); + } + + printf("\n"); + printf(" final rewards: ["); + for (int i = 0; i < NUM_FISH; i++) { + printf("%s%.6g", i ? ", " : "", (double)final_rewards[i]); + } + printf("]\n"); + printf(" final terminals: ["); + for (int i = 0; i < NUM_FISH; i++) { + printf("%s%.6g", i ? ", " : "", (double)final_terminals[i]); + } + printf("]\n"); +} + +static int run_seed(unsigned int seed, TrajectorySnapshot* a, TrajectorySnapshot* b) { + memset(a, 0, sizeof(*a)); + memset(b, 0, sizeof(*b)); + + run_trajectory(a, seed); + run_trajectory(b, seed); + + int failed = 0; + if (!snapshots_equal(a, b)) { + fprintf(stderr, "FAIL seed=%u: two runs were not bit-identical\n", seed); + failed = 1; + } + + size_t obs_n = (size_t)(NUM_STEPS + 1) * NUM_FISH * OBS_SIZE; + size_t rew_n = (size_t)NUM_STEPS * NUM_FISH; + if (!all_finite_float(a->observations, obs_n) || + !all_finite_float(a->rewards, rew_n) || + !all_finite_float(a->terminals, rew_n)) { + fprintf(stderr, "FAIL seed=%u: non-finite values in trajectory\n", seed); + failed = 1; + } + + report_trajectory(a, seed); + + printf("\n"); + if (failed) { + printf(" seed=%u RESULT: FAIL\n", seed); + } else { + printf(" seed=%u RESULT: PASS (deterministic, finite)\n", seed); + } + printf("\n"); + return failed; +} + +static int run_test(void) { + TrajectorySnapshot* a = (TrajectorySnapshot*)calloc(1, sizeof(TrajectorySnapshot)); + TrajectorySnapshot* b = (TrajectorySnapshot*)calloc(1, sizeof(TrajectorySnapshot)); + if (a == NULL || b == NULL) { + fprintf(stderr, "failed to allocate trajectory snapshots\n"); + free(a); + free(b); + return 1; + } + + printf("wef numerical stability (C)\n"); + printf("\n"); + printf(" seeds="); + for (int i = 0; i < NUM_TEST_SEEDS; i++) { + printf("%s%u", i ? "," : "", TEST_SEEDS[i]); + } + printf(" steps=%d num_agents=%d\n", NUM_STEPS, NUM_FISH); + printf("\n"); + + SpsResult sps = measure_sps(); + report_sps(&sps); + printf("\n"); + + int failed = 0; + for (int i = 0; i < NUM_TEST_SEEDS; i++) { + failed |= run_seed(TEST_SEEDS[i], a, b); + } + + printf("============================================================\n"); + if (failed) { + printf("OVERALL RESULT: FAIL\n"); + } else { + printf("OVERALL RESULT: PASS (all seeds deterministic, finite)\n"); + } + + free(a); + free(b); + return failed; +} + +int main(int argc, char** argv) { + (void)argc; + (void)argv; + return run_test(); +} From 78ec0c0d3d88296637bbe39abcf87fcbd6414dfa Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Fri, 31 Jul 2026 15:59:33 -0400 Subject: [PATCH 10/20] 30% SPS improvement while retaining high numerical precision to original. --- artifacts/wef/float_vs_double_metrics.txt | 117 ++++ ocean/wef/benchmark_test.c | 407 +++++++++++-- ocean/wef/wef.h | 683 +++++++++++----------- 3 files changed, 823 insertions(+), 384 deletions(-) create mode 100644 artifacts/wef/float_vs_double_metrics.txt diff --git a/artifacts/wef/float_vs_double_metrics.txt b/artifacts/wef/float_vs_double_metrics.txt new file mode 100644 index 0000000000..ca1661d6f1 --- /dev/null +++ b/artifacts/wef/float_vs_double_metrics.txt @@ -0,0 +1,117 @@ +# wef pure-float vs original-double performance and numerical precision +# recorded_at_utc: 2026-07-31T19:56:24Z +# git_branch: fish +# git_commit_short: 20e8133b +# platform: linux amd64, clang -O3/-O2, OpenMP where noted +# +# "old" = original double-precision pack (SI C, V/m, double physics) +# "new" = pure float wef.h after float conversion + integer eat/bite cooldowns +# (SI C, V/m, float physics; EAT_COOLDOWN_STEPS=3, BITE_COOLDOWN_STEPS=5) +# +# Trajectory protocol (precision): 4 fish, 16 food, FOOD_UNIFORM, arena 70x70 cm, +# 100 steps, fixed random actions from seed, seeds {0,1,2}. +# SPS protocol: total_agents=4096, num_fish=4, num_envs=1024, vec_steps=200, +# num_buffers=8, num_threads=8 (matches config/wef.ini [vec] / official harness). +# +# Fair precision compare uses the same integer-tick cooldowns on the double pack +# so residual 1/3 freeze desync is not counted as float error. +# Original double still uses cd -= 1/3 and is reported separately for seed 2. + +# ============================================================================= +# SECTION: memory +# columns: build, sizeof_FishEnv_bytes +# ============================================================================= +memory +old_double 9920 +new_float 5072 + +# ============================================================================= +# SECTION: sps +# columns: build, mode, total_agents, steps, threads, sps_agent_steps_per_sec, source, notes +# sps is agent-steps/sec = total_agents * vec_steps / wall_time +# ============================================================================= +sps +old_double openmp 4096 200 8 91243.1 artifacts/wef/benchmark_baseline.txt historical baseline capture 2026-07-30 +old_double openmp 4096 200 8 92402.8 isolated pack mean of 3 runs 2026-07-31 runs 92296.8 92467.1 92444.6 +old_double serial 4096 200 1 11715.0 isolated pack mean of 2 runs 2026-07-31 runs 11717.4 11712.5 +new_float openmp 4096 200 8 113078.9 wef_benchmark_test official harness 2026-07-31 after integer cooldown fix +new_float openmp 4096 200 8 121223.6 isolated pack mean of 3 runs 2026-07-31 pre-report pure float SI units; runs ~121127 121231 121313 +new_float serial 4096 200 1 15490.9 isolated pack mean of 2 runs 2026-07-31 runs 15488.0 15493.9 + +# Derived speedups (use mean isolated openmp where available) +# new/old openmp (isolated means): 121223.6 / 92402.8 = 1.312 +# new/old serial: 15490.9 / 11715.0 = 1.322 +# new official / historical baseline: 113078.9 / 91243.1 = 1.239 +# memory ratio new/old: 5072/9920 = 0.511 + +# ============================================================================= +# SECTION: precision_fair +# float (new) vs double with integer cooldowns on BOTH sides +# columns: seed, max_init_dpos_cm, field_E_max_relerr, field_E_mean_relerr, +# max_pose_dpos_cm, end_pose_dpos_max_cm, reward_step_mismatches, +# reward_mismatches_denom, reward_sum_float, reward_sum_double, +# food_eaten_float, food_eaten_double, obs0_delta, obs_end_delta, +# obs0_float, obs0_double, obs_end_float, obs_end_double +# ============================================================================= +precision_fair +0 2.267e-06 4.044e-06 1.691e-06 2.24194e-05 1.920e-05 0 400 -9.5 -9.5 0 0 -2.739699e-03 -4.340893e-03 1.2476715 1.2504112 -3.367411 -3.3630701 +1 1.319e-06 6.041e-06 1.913e-06 1.39879e-05 9.876e-06 0 400 -75.0 -75.0 0 0 2.068959e-03 7.934886e-04 -0.55060033 -0.55266929 -12.320539 -12.321333 +2 9.786e-07 6.940e-06 2.624e-06 1.90076e-05 1.722e-06 0 400 -96.5 -96.5 1 1 -1.719338e-03 3.343527e-03 -0.58384748 -0.58212814 -18.952954 -18.956298 + +# ============================================================================= +# SECTION: precision_vs_original_double +# float (new, int cooldown) vs original double pack (fractional 1/3 cooldown) +# columns: seed, max_pose_dpos_cm, end_pose_dpos_max_cm, reward_step_mismatches, +# first_dpos_gt_1cm_step, first_dpos_gt_1cm_fish, notes +# ============================================================================= +precision_vs_original_double +0 2.24194e-05 1.920e-05 0 +1 1.39879e-05 9.876e-06 0 +2 0.560663 0.5607 2 80 3 extra freeze frame on original double after eat (1/3 residual) + +# ============================================================================= +# SECTION: official_harness_vs_baseline_fingerprints +# current new_float vs artifacts/wef/benchmark_baseline_fingerprints.txt (double-era) +# columns: seed, determinism, actions_match, rewards_sum_match, food_match, rng_match, +# obs_fnv_match, state_fnv_match, reward_sum, baseline_reward_sum, +# obs_sum, baseline_obs_sum, obs_sum_delta +# ============================================================================= +official_vs_baseline +0 PASS_DETERMINISM 1 1 1 1 0 0 -9.5 -9.5 -3.3674109688145109 -3.3630700759240426 0.0043408928904683 +1 PASS_DETERMINISM 1 1 1 1 0 0 -75 -75 -12.320539442123845 -10.321332900901325 1.99920654122252 +2 PASS_DETERMINISM 1 1 1 1 0 0 -96.5 -96.5 -18.952954070642591 -22.531803305260837 3.578849234618246 + +# ============================================================================= +# SECTION: summary_scalars +# convenient single-value rows for plotting +# columns: metric, value, unit, notes +# ============================================================================= +summary_scalars +sizeof_old 9920 bytes FishEnv +sizeof_new 5072 bytes FishEnv +sizeof_ratio_new_over_old 0.5113 5072/9920 +sps_old_openmp_mean 92402.8 agent_steps_per_sec isolated 3-run mean +sps_new_openmp_mean 121223.6 agent_steps_per_sec isolated 3-run mean pure float +sps_new_openmp_official 113078.9 agent_steps_per_sec wef_benchmark_test after int cooldown +sps_old_baseline_artifact 91243.1 agent_steps_per_sec benchmark_baseline.txt +sps_speedup_openmp_isolated 1.312 121223.6/92402.8 +sps_speedup_serial_isolated 1.322 15490.9/11715.0 +sps_speedup_official_vs_baseline 1.239 113078.9/91243.1 +max_pose_dpos_fair_seed0_cm 2.24194e-05 cm float vs double+int_cd +max_pose_dpos_fair_seed1_cm 1.39879e-05 cm +max_pose_dpos_fair_seed2_cm 1.90076e-05 cm +max_pose_dpos_fair_all_seeds_cm 2.24194e-05 cm max over seeds 0-2 +max_field_relerr_fair_all_seeds 6.940e-06 max |E| relerr over seeds +reward_mismatches_fair_all_seeds 0 of 400 steps x 3 seeds +max_pose_dpos_vs_orig_double_seed2_cm 0.560663 cm original double 1/3 residual freeze + +# ============================================================================= +# SECTION: figure_notes +# ============================================================================= +# Suggested figures: +# 1) Bar: SPS old vs new (openmp isolated means and/or official) +# 2) Bar: sizeof old vs new +# 3) Bar or grouped: max pose dpos per seed (fair compare) — all ~1e-5 cm +# 4) Optional: seed2 before/after cooldown fix (0.56 cm vs 1.9e-5 cm) +# Parse: skip lines starting with #; section name is a single token line; +# following lines are tab-separated until blank or next section/comment. diff --git a/ocean/wef/benchmark_test.c b/ocean/wef/benchmark_test.c index 056d5f1258..845908291e 100644 --- a/ocean/wef/benchmark_test.c +++ b/ocean/wef/benchmark_test.c @@ -3,14 +3,16 @@ * * Creates a 4-fish arena, steps with seeded random actions, and reports * observations plus internal environment state. For each seed in {0,1,2}, - * runs the trajectory twice and asserts bit-identical results so biophysics - * approximations can be checked against this baseline later without changing - * the true physics. + * runs the trajectory twice and asserts bit-identical results, then compares + * fingerprints against the double-precision baseline at + * artifacts/wef/benchmark_baseline_fingerprints.txt so biophysics changes + * (e.g. double→float) are easy to detect. * * Build (standalone wef also builds this binary): * ./build.sh wef --fast * ./wef_benchmark_test - * + * ./wef_benchmark_test --baseline path/to/fingerprints.txt + * * Manual build: * clang -O2 -I./raylib-5.5_linux_amd64/include -I./src -I./vendor \ * -I./ocean/wef ocean/wef/benchmark_test.c \ @@ -36,8 +38,35 @@ #define NUM_STEPS 100 #define NUM_FOOD 16 #define NUM_TEST_SEEDS 3 +#define DEFAULT_BASELINE_PATH "artifacts/wef/benchmark_baseline_fingerprints.txt" +/* Reward / episode_return are multiples of 0.5; allow tiny float noise. */ +#define BASELINE_REWARD_ATOL 1e-5 +#define BASELINE_OBS_SUM_ATOL 1e-4 +#define BASELINE_OBS_SUM_RTOL 1e-6 + static const unsigned int TEST_SEEDS[NUM_TEST_SEEDS] = {0u, 1u, 2u}; +typedef struct SeedMetrics { + unsigned int seed; + double reward_sum; + double final_obs_sum; + int food_eaten; + float episode_return; + unsigned int rng_end; + uint64_t obs_fnv1a; + uint64_t rewards_fnv1a; + uint64_t actions_fnv1a; + uint64_t state_fnv1a; +} SeedMetrics; + +typedef struct BaselineTable { + bool loaded; + char path[512]; + char commit[128]; + SeedMetrics seeds[NUM_TEST_SEEDS]; + bool seed_present[NUM_TEST_SEEDS]; +} BaselineTable; + /* * SPS benchmark sizing from config/wef.ini: * [vec] @@ -406,43 +435,31 @@ static void report_sps(const SpsResult* sps) { printf(" SPS=%.1f (total env steps/sec, flattened over agents)\n", sps->sps); } -static void report_trajectory(const TrajectorySnapshot* snap, unsigned int seed) { +static SeedMetrics compute_metrics( + const TrajectorySnapshot* snap, unsigned int seed +) { + SeedMetrics m = {0}; + m.seed = seed; const size_t obs_n = (size_t)(NUM_STEPS + 1) * NUM_FISH * OBS_SIZE; const size_t rew_n = (size_t)NUM_STEPS * NUM_FISH; const size_t act_n = (size_t)NUM_STEPS * NUM_FISH * ACTION_SIZE; const float* final_obs = snap->observations + (size_t)NUM_STEPS * NUM_FISH * OBS_SIZE; - const float* final_rewards = - snap->rewards + (size_t)(NUM_STEPS - 1) * NUM_FISH; - const float* final_terminals = - snap->terminals + (size_t)(NUM_STEPS - 1) * NUM_FISH; - double obs_sum = 0.0; - double obs_min = final_obs[0]; - double obs_max = final_obs[0]; for (size_t i = 0; i < (size_t)NUM_FISH * OBS_SIZE; i++) { - double v = (double)final_obs[i]; - obs_sum += v; - if (v < obs_min) obs_min = v; - if (v > obs_max) obs_max = v; + m.final_obs_sum += (double)final_obs[i]; } - - double reward_sum = 0.0; - double cumulative[NUM_FISH] = {0}; - bool any_terminal = false; for (int t = 0; t < NUM_STEPS; t++) { for (int i = 0; i < NUM_FISH; i++) { - float r = snap->rewards[t * NUM_FISH + i]; - float d = snap->terminals[t * NUM_FISH + i]; - reward_sum += (double)r; - cumulative[i] += (double)r; - if (d != 0.0f) any_terminal = true; + m.reward_sum += (double)snap->rewards[t * NUM_FISH + i]; } } - - uint64_t obs_hash = hash_bytes(snap->observations, obs_n * sizeof(float)); - uint64_t rew_hash = hash_bytes(snap->rewards, rew_n * sizeof(float)); - uint64_t act_hash = hash_bytes(snap->actions, act_n * sizeof(float)); + m.food_eaten = snap->food_eaten[NUM_STEPS]; + m.episode_return = snap->episode_return[NUM_STEPS]; + m.rng_end = snap->rng[NUM_STEPS]; + m.obs_fnv1a = hash_bytes(snap->observations, obs_n * sizeof(float)); + m.rewards_fnv1a = hash_bytes(snap->rewards, rew_n * sizeof(float)); + m.actions_fnv1a = hash_bytes(snap->actions, act_n * sizeof(float)); uint64_t state_hash = FNV_OFFSET; state_hash = fnv1a_update(state_hash, snap->agent_x, sizeof(snap->agent_x)); state_hash = fnv1a_update(state_hash, snap->agent_y, sizeof(snap->agent_y)); @@ -455,6 +472,202 @@ static void report_trajectory(const TrajectorySnapshot* snap, unsigned int seed) state_hash = fnv1a_update(state_hash, snap->food_active, sizeof(snap->food_active)); state_hash = fnv1a_update(state_hash, snap->tick, sizeof(snap->tick)); state_hash = fnv1a_update(state_hash, snap->rng, sizeof(snap->rng)); + m.state_fnv1a = state_hash; + return m; +} + +static int seed_index(unsigned int seed) { + for (int i = 0; i < NUM_TEST_SEEDS; i++) { + if (TEST_SEEDS[i] == seed) return i; + } + return -1; +} + +static bool parse_u64_hex(const char* s, uint64_t* out) { + char* end = NULL; + unsigned long long v = strtoull(s, &end, 0); + if (end == s) return false; + *out = (uint64_t)v; + return true; +} + +static bool load_baseline(const char* path, BaselineTable* table) { + memset(table, 0, sizeof(*table)); + snprintf(table->path, sizeof(table->path), "%s", path); + + FILE* f = fopen(path, "r"); + if (f == NULL) { + return false; + } + + char line[512]; + int current = -1; + while (fgets(line, sizeof(line), f) != NULL) { + if (line[0] == '#' || line[0] == '\n' || line[0] == '\r') { + if (strncmp(line, "# git_commit=", 13) == 0) { + snprintf( + table->commit, sizeof(table->commit), "%s", line + 13 + ); + /* strip trailing newline */ + size_t n = strlen(table->commit); + while (n > 0 && + (table->commit[n - 1] == '\n' || + table->commit[n - 1] == '\r')) { + table->commit[--n] = '\0'; + } + } + continue; + } + + unsigned int seed = 0; + if (sscanf(line, "[seed %u]", &seed) == 1) { + current = seed_index(seed); + if (current >= 0) { + table->seed_present[current] = true; + table->seeds[current].seed = seed; + } + continue; + } + if (current < 0) continue; + + char key[128]; + char value[128]; + if (sscanf(line, "%127[^=]=%127s", key, value) != 2) continue; + + SeedMetrics* m = &table->seeds[current]; + if (strcmp(key, "reward sum") == 0) { + m->reward_sum = strtod(value, NULL); + } else if (strcmp(key, "final observation sum") == 0) { + m->final_obs_sum = strtod(value, NULL); + } else if (strcmp(key, "food_eaten") == 0) { + m->food_eaten = (int)strtol(value, NULL, 10); + } else if (strcmp(key, "episode_return") == 0) { + m->episode_return = (float)strtod(value, NULL); + } else if (strcmp(key, "rng") == 0) { + m->rng_end = (unsigned int)strtoul(value, NULL, 10); + } else if (strcmp(key, "obs_fnv1a") == 0) { + parse_u64_hex(value, &m->obs_fnv1a); + } else if (strcmp(key, "rewards_fnv1a") == 0) { + parse_u64_hex(value, &m->rewards_fnv1a); + } else if (strcmp(key, "actions_fnv1a") == 0) { + parse_u64_hex(value, &m->actions_fnv1a); + } else if (strcmp(key, "state_fnv1a") == 0) { + parse_u64_hex(value, &m->state_fnv1a); + } + } + fclose(f); + table->loaded = true; + return true; +} + +static bool float_close(double a, double b, double atol, double rtol) { + double diff = fabs(a - b); + return diff <= atol + rtol * fmax(fabs(a), fabs(b)); +} + +/* Returns number of mismatched fields (0 = match). */ +static int compare_to_baseline( + const SeedMetrics* got, const BaselineTable* baseline +) { + int idx = seed_index(got->seed); + if (idx < 0 || !baseline->loaded || !baseline->seed_present[idx]) { + printf(" baseline: MISSING seed=%u in %s\n", got->seed, baseline->path); + return 1; + } + const SeedMetrics* exp = &baseline->seeds[idx]; + int mismatches = 0; + + printf(" baseline compare (commit %s):\n", + baseline->commit[0] ? baseline->commit : "?"); + + #define CHECK_EXACT_U64(name, field) do { \ + bool ok = (got->field == exp->field); \ + printf(" %-22s got=0x%016llx exp=0x%016llx %s\n", \ + name, \ + (unsigned long long)got->field, \ + (unsigned long long)exp->field, \ + ok ? "MATCH" : "DIFF"); \ + if (!ok) mismatches++; \ + } while (0) + + #define CHECK_EXACT_INT(name, field) do { \ + bool ok = (got->field == exp->field); \ + printf(" %-22s got=%d exp=%d %s\n", \ + name, (int)got->field, (int)exp->field, ok ? "MATCH" : "DIFF"); \ + if (!ok) mismatches++; \ + } while (0) + + #define CHECK_EXACT_UINT(name, field) do { \ + bool ok = (got->field == exp->field); \ + printf(" %-22s got=%u exp=%u %s\n", \ + name, (unsigned)got->field, (unsigned)exp->field, \ + ok ? "MATCH" : "DIFF"); \ + if (!ok) mismatches++; \ + } while (0) + + #define CHECK_CLOSE(name, field, atol, rtol) do { \ + bool ok = float_close( \ + (double)got->field, (double)exp->field, atol, rtol); \ + printf(" %-22s got=%.17g exp=%.17g diff=%.3g %s\n", \ + name, (double)got->field, (double)exp->field, \ + fabs((double)got->field - (double)exp->field), \ + ok ? "MATCH" : "DIFF"); \ + if (!ok) mismatches++; \ + } while (0) + + CHECK_EXACT_U64("actions_fnv1a", actions_fnv1a); + CHECK_EXACT_U64("obs_fnv1a", obs_fnv1a); + CHECK_EXACT_U64("rewards_fnv1a", rewards_fnv1a); + CHECK_EXACT_U64("state_fnv1a", state_fnv1a); + CHECK_EXACT_INT("food_eaten", food_eaten); + CHECK_EXACT_UINT("rng", rng_end); + CHECK_CLOSE("reward sum", reward_sum, BASELINE_REWARD_ATOL, 0.0); + CHECK_CLOSE( + "episode_return", episode_return, BASELINE_REWARD_ATOL, 0.0 + ); + CHECK_CLOSE( + "final observation sum", + final_obs_sum, + BASELINE_OBS_SUM_ATOL, + BASELINE_OBS_SUM_RTOL + ); + + #undef CHECK_EXACT_U64 + #undef CHECK_EXACT_INT + #undef CHECK_EXACT_UINT + #undef CHECK_CLOSE + + printf(" baseline fields mismatched: %d\n", mismatches); + return mismatches; +} + +static void report_trajectory( + const TrajectorySnapshot* snap, unsigned int seed, const SeedMetrics* metrics +) { + const size_t obs_n = (size_t)(NUM_STEPS + 1) * NUM_FISH * OBS_SIZE; + const float* final_obs = + snap->observations + (size_t)NUM_STEPS * NUM_FISH * OBS_SIZE; + const float* final_rewards = + snap->rewards + (size_t)(NUM_STEPS - 1) * NUM_FISH; + const float* final_terminals = + snap->terminals + (size_t)(NUM_STEPS - 1) * NUM_FISH; + + double obs_min = final_obs[0]; + double obs_max = final_obs[0]; + for (size_t i = 0; i < (size_t)NUM_FISH * OBS_SIZE; i++) { + double v = (double)final_obs[i]; + if (v < obs_min) obs_min = v; + if (v > obs_max) obs_max = v; + } + + double cumulative[NUM_FISH] = {0}; + bool any_terminal = false; + for (int t = 0; t < NUM_STEPS; t++) { + for (int i = 0; i < NUM_FISH; i++) { + cumulative[i] += (double)snap->rewards[t * NUM_FISH + i]; + if (snap->terminals[t * NUM_FISH + i] != 0.0f) any_terminal = true; + } + } printf("------------------------------------------------------------\n"); printf("seed=%u\n", seed); @@ -467,9 +680,9 @@ static void report_trajectory(const TrajectorySnapshot* snap, unsigned int seed) printf("\n"); printf(" observations finite=%s\n", all_finite_float(snap->observations, obs_n) ? "true" : "false"); - printf(" final observation sum=%.17g\n", obs_sum); + printf(" final observation sum=%.17g\n", metrics->final_obs_sum); printf(" final observation min/max=%.17g / %.17g\n", obs_min, obs_max); - printf(" reward sum=%.17g\n", reward_sum); + printf(" reward sum=%.17g\n", metrics->reward_sum); printf(" cumulative rewards per fish=["); for (int i = 0; i < NUM_FISH; i++) { printf("%s%.17g", i ? ", " : "", cumulative[i]); @@ -479,17 +692,17 @@ static void report_trajectory(const TrajectorySnapshot* snap, unsigned int seed) printf("\n"); printf(" final tick=%d\n", snap->tick[NUM_STEPS]); - printf(" food_eaten=%d\n", snap->food_eaten[NUM_STEPS]); + printf(" food_eaten=%d\n", metrics->food_eaten); printf(" collisions_fish=%d\n", snap->collisions_fish[NUM_STEPS]); printf(" eod_agent_steps=%d\n", snap->eod_agent_steps[NUM_STEPS]); - printf(" episode_return=%.17g\n", (double)snap->episode_return[NUM_STEPS]); - printf(" rng=%u\n", snap->rng[NUM_STEPS]); + printf(" episode_return=%.17g\n", (double)metrics->episode_return); + printf(" rng=%u\n", metrics->rng_end); printf("\n"); - printf(" obs_fnv1a=0x%016llx\n", (unsigned long long)obs_hash); - printf(" rewards_fnv1a=0x%016llx\n", (unsigned long long)rew_hash); - printf(" actions_fnv1a=0x%016llx\n", (unsigned long long)act_hash); - printf(" state_fnv1a=0x%016llx\n", (unsigned long long)state_hash); + printf(" obs_fnv1a=0x%016llx\n", (unsigned long long)metrics->obs_fnv1a); + printf(" rewards_fnv1a=0x%016llx\n", (unsigned long long)metrics->rewards_fnv1a); + printf(" actions_fnv1a=0x%016llx\n", (unsigned long long)metrics->actions_fnv1a); + printf(" state_fnv1a=0x%016llx\n", (unsigned long long)metrics->state_fnv1a); printf("\n"); printf(" final environment state (agents):\n"); @@ -551,7 +764,13 @@ static void report_trajectory(const TrajectorySnapshot* snap, unsigned int seed) printf("]\n"); } -static int run_seed(unsigned int seed, TrajectorySnapshot* a, TrajectorySnapshot* b) { +static int run_seed( + unsigned int seed, + TrajectorySnapshot* a, + TrajectorySnapshot* b, + const BaselineTable* baseline, + bool require_baseline_match +) { memset(a, 0, sizeof(*a)); memset(b, 0, sizeof(*b)); @@ -573,11 +792,32 @@ static int run_seed(unsigned int seed, TrajectorySnapshot* a, TrajectorySnapshot failed = 1; } - report_trajectory(a, seed); + SeedMetrics metrics = compute_metrics(a, seed); + report_trajectory(a, seed, &metrics); + + printf("\n"); + int baseline_mismatches = 0; + if (baseline != NULL && baseline->loaded) { + baseline_mismatches = compare_to_baseline(&metrics, baseline); + if (require_baseline_match && baseline_mismatches > 0) { + failed = 1; + } + } else { + printf(" baseline: skipped (file not loaded)\n"); + } printf("\n"); if (failed) { printf(" seed=%u RESULT: FAIL\n", seed); + } else if (baseline != NULL && baseline->loaded && baseline_mismatches == 0) { + printf(" seed=%u RESULT: PASS (deterministic, finite, matches baseline)\n", + seed); + } else if (baseline != NULL && baseline->loaded) { + printf( + " seed=%u RESULT: PASS_DETERMINISM " + "(finite + self-consistent; baseline DIFF — outcomes changed)\n", + seed + ); } else { printf(" seed=%u RESULT: PASS (deterministic, finite)\n", seed); } @@ -585,7 +825,24 @@ static int run_seed(unsigned int seed, TrajectorySnapshot* a, TrajectorySnapshot return failed; } -static int run_test(void) { +static void print_usage(const char* argv0) { + printf( + "Usage: %s [--baseline PATH] [--require-baseline-match] [--skip-sps]\n" + "\n" + " --baseline PATH Fingerprint file to compare against\n" + " (default: %s)\n" + " --require-baseline-match Exit non-zero if any baseline field differs\n" + " (default: only determinism/finite fail the run;\n" + " baseline diffs are still printed)\n" + " --skip-sps Skip the multi-env SPS timing section\n", + argv0, + DEFAULT_BASELINE_PATH + ); +} + +static int run_test( + const char* baseline_path, bool require_baseline_match, bool skip_sps +) { TrajectorySnapshot* a = (TrajectorySnapshot*)calloc(1, sizeof(TrajectorySnapshot)); TrajectorySnapshot* b = (TrajectorySnapshot*)calloc(1, sizeof(TrajectorySnapshot)); if (a == NULL || b == NULL) { @@ -595,6 +852,17 @@ static int run_test(void) { return 1; } + BaselineTable baseline = {0}; + if (baseline_path != NULL) { + if (!load_baseline(baseline_path, &baseline)) { + fprintf( + stderr, + "warning: could not load baseline fingerprints from %s\n", + baseline_path + ); + } + } + printf("wef numerical stability (C)\n"); printf("\n"); printf(" seeds="); @@ -602,22 +870,44 @@ static int run_test(void) { printf("%s%u", i ? "," : "", TEST_SEEDS[i]); } printf(" steps=%d num_agents=%d\n", NUM_STEPS, NUM_FISH); + if (baseline.loaded) { + printf(" baseline=%s\n", baseline.path); + if (baseline.commit[0]) { + printf(" baseline_commit=%s\n", baseline.commit); + } + printf( + " require_baseline_match=%s\n", + require_baseline_match ? "true" : "false" + ); + } else { + printf(" baseline=none\n"); + } printf("\n"); - SpsResult sps = measure_sps(); - report_sps(&sps); - printf("\n"); + if (!skip_sps) { + SpsResult sps = measure_sps(); + report_sps(&sps); + printf("\n"); + } int failed = 0; + int baseline_failed_seeds = 0; for (int i = 0; i < NUM_TEST_SEEDS; i++) { - failed |= run_seed(TEST_SEEDS[i], a, b); + int before = failed; + failed |= run_seed( + TEST_SEEDS[i], a, b, &baseline, require_baseline_match + ); + if (require_baseline_match && failed != before) { + baseline_failed_seeds++; + } + (void)baseline_failed_seeds; } printf("============================================================\n"); if (failed) { printf("OVERALL RESULT: FAIL\n"); } else { - printf("OVERALL RESULT: PASS (all seeds deterministic, finite)\n"); + printf("OVERALL RESULT: PASS\n"); } free(a); @@ -626,7 +916,26 @@ static int run_test(void) { } int main(int argc, char** argv) { - (void)argc; - (void)argv; - return run_test(); + const char* baseline_path = DEFAULT_BASELINE_PATH; + bool require_baseline_match = false; + bool skip_sps = false; + + for (int i = 1; i < argc; i++) { + if (strcmp(argv[i], "--baseline") == 0 && i + 1 < argc) { + baseline_path = argv[++i]; + } else if (strcmp(argv[i], "--require-baseline-match") == 0) { + require_baseline_match = true; + } else if (strcmp(argv[i], "--skip-sps") == 0) { + skip_sps = true; + } else if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0) { + print_usage(argv[0]); + return 0; + } else { + fprintf(stderr, "unknown argument: %s\n", argv[i]); + print_usage(argv[0]); + return 2; + } + } + + return run_test(baseline_path, require_baseline_match, skip_sps); } diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index b45811b12c..c16bed6c1d 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -23,23 +23,23 @@ #include "raylib.h" // Constants -#define PI_D 3.14159265358979323846264338327950288 -#define CM_TO_M 0.01 -#define K_COULOMB 8.99e9 -#define EPSILON_0 8.854e-12 -#define FIELD_EPS_M 1e-5 -#define REFLECTION_SCALE 1.0 -#define SENSOR_EPS 1e-25 +#define PI_F 3.14159265358979323846f +#define CM_TO_M 0.01f +#define K_COULOMB 8.99e9f +#define EPSILON_0 8.854e-12f +#define FIELD_EPS_M 1e-5f +#define REFLECTION_SCALE 1.0f +#define SENSOR_EPS 1e-25f // Values from upstream cfg.py and Table 1 of the accompanying publication -#define SIMULATION_HZ 83.0 -#define BODY_RADIUS_CM 1.0 -#define FOOD_RADIUS_CM 0.25 -#define CONDUCTOR_CONTRAST -0.5 -#define EOD_CHARGE_C 1.11e-15 -#define EOD_POLE_OFFSET_CM 0.5 -#define INTRINSIC_MOMENT_C_M 1.11e-23 -#define FOOD_INTRINSIC_MOMENT_C_M 1.11e-24 +#define SIMULATION_HZ 83.0f +#define BODY_RADIUS_CM 1.0f +#define FOOD_RADIUS_CM 0.25f +#define CONDUCTOR_CONTRAST -0.5f +#define EOD_CHARGE_C 1.11e-15f +#define EOD_POLE_OFFSET_CM 0.5f +#define INTRINSIC_MOMENT_C_M 1.11e-23f +#define FOOD_INTRINSIC_MOMENT_C_M 1.11e-24f #define NUM_MORMYROMASTS 36 #define NUM_AMPULLARY 24 @@ -49,29 +49,32 @@ #define MAX_DIPOLE_SOURCES (2 * MAX_AGENTS + 2 * MAX_FOOD) #define OBS_SIZE 110 #define ACTION_SIZE 4 -#define EATING_RADIUS_CM 2.0 -#define BITING_RADIUS_CM 3.0 -#define EATING_ANGLE (PI_D / 4.0) +#define EATING_RADIUS_CM 2.0f +#define BITING_RADIUS_CM 3.0f +#define EATING_ANGLE (PI_F / 4.0f) #define EAT_REWARD 10.0f #define COLLISION_REWARD -0.5f #define BITTEN_REWARD -5.0f #define MAX_PATCHES 90 #define TRACE_LENGTH 128 -#define AMPULLARY_MIN_VM 2e-10 -#define AMPULLARY_MAX_VM 2e-8 -#define MORMYROMAST_MIN_VM 5e-8 -#define MORMYROMAST_MAX_VM 5e-2 -#define KNOLLEN_MIN_VM 2e-7 +#define EAT_COOLDOWN_STEPS 3 +#define BITE_COOLDOWN_STEPS 5 + +#define AMPULLARY_MIN_VM 2e-10f +#define AMPULLARY_MAX_VM 2e-8f +#define MORMYROMAST_MIN_VM 5e-8f +#define MORMYROMAST_MAX_VM 5e-2f +#define KNOLLEN_MIN_VM 2e-7f typedef struct FishVec2 { - double x; - double y; + float x; + float y; } FishVec2; typedef struct FishMonopole { FishVec2 position_cm; - double charge_c; + float charge_c; } FishMonopole; typedef struct FishDipole { @@ -98,22 +101,23 @@ typedef enum FishWall { typedef struct FishMovement { FishVec2 position_cm; + float orientation; + float max_linear_velocity; + float max_angular_velocity; + FishVec2 displacement_ground_cm; FishVec2 displacement_ego_cm; - double orientation; - double last_orientation; - double linear_velocity; - double angular_velocity; - - double body_radius_cm; - double min_linear_velocity; - double max_linear_velocity; - double max_linear_acceleration; - double min_angular_velocity; - double max_angular_velocity; - double max_angular_acceleration; - double linear_drag_factor; - double angular_drag_factor; + float last_orientation; + float linear_velocity; + float angular_velocity; + + float body_radius_cm; + float min_linear_velocity; + float max_linear_acceleration; + float min_angular_velocity; + float max_angular_acceleration; + float linear_drag_factor; + float angular_drag_factor; int motion_order; bool backwards; @@ -122,47 +126,47 @@ typedef struct FishMovement { typedef struct FishMotionProposal { FishVec2 position_cm; - double orientation; - double linear_velocity; - double angular_velocity; + float orientation; + float linear_velocity; + float angular_velocity; } FishMotionProposal; typedef struct FishFoodMotion { FishVec2 position_cm; FishVec2 velocity_cm; - double orientation; + float orientation; } FishFoodMotion; -double vec_length_squared(FishVec2 v) { +float vec_length_squared(FishVec2 v) { return v.x * v.x + v.y * v.y; } -double vec_length(FishVec2 v) { - return sqrt(vec_length_squared(v)); +float vec_length(FishVec2 v) { + return sqrtf(vec_length_squared(v)); } -double clamp(double value, double minimum, double maximum) { - return fmin(maximum, fmax(minimum, value)); +float clamp(float value, float minimum, float maximum) { + return fminf(maximum, fmaxf(minimum, value)); } /* Stable wrap to [-pi, pi], identical to movement._wrap_angle. */ -double wrap_angle(double angle) { - return atan2(sin(angle), cos(angle)); +float wrap_angle(float angle) { + return atan2f(sinf(angle), cosf(angle)); } /* Rotate a vector; add translation separately when transforming a position. */ -FishVec2 rotate(FishVec2 v, double angle) { - double c = cos(angle); - double s = sin(angle); +FishVec2 rotate(FishVec2 v, float angle) { + float c = cosf(angle); + float s = sinf(angle); return (FishVec2){c * v.x - s * v.y, s * v.x + c * v.y}; } -FishVec2 transform_position(FishVec2 local_cm, FishVec2 origin_cm, double angle) { +FishVec2 transform_position(FishVec2 local_cm, FishVec2 origin_cm, float angle) { FishVec2 rotated = rotate(local_cm, angle); return (FishVec2){rotated.x + origin_cm.x, rotated.y + origin_cm.y}; } -FishSensor transform_sensor(FishSensor local, FishVec2 origin_cm, double angle) { +FishSensor transform_sensor(FishSensor local, FishVec2 origin_cm, float angle) { FishSensor world = { .position_cm = transform_position(local.position_cm, origin_cm, angle), .normal = rotate(local.normal, angle), @@ -171,71 +175,70 @@ FishSensor transform_sensor(FishSensor local, FishVec2 origin_cm, double angle) } // Biophysics and dynamics + FishMotionProposal propose_motion( const FishMovement* fish, - double move_command, - double turn_command, + float move_command, + float turn_command, bool eating_frozen ) { FishMotionProposal proposal = { .position_cm = fish->position_cm, .orientation = fish->orientation, - .linear_velocity = 0.0, - .angular_velocity = 0.0, + .linear_velocity = 0.0f, + .angular_velocity = 0.0f, }; if (fish->motion_order == MOTION_FIRST_ORDER) { - if (eating_frozen) { - move_command = 0.0; - turn_command = 0.0; - } - proposal.angular_velocity = turn_command * fish->max_angular_velocity; - proposal.linear_velocity = move_command * fish->max_linear_velocity; + float move = eating_frozen ? 0.0f : move_command; + float turn = eating_frozen ? 0.0f : turn_command; + proposal.angular_velocity = turn * fish->max_angular_velocity; + proposal.linear_velocity = move * fish->max_linear_velocity; } else { proposal.linear_velocity = - fish->linear_velocity + move_command * fish->max_linear_acceleration; + (float)fish->linear_velocity + + move_command * (float)fish->max_linear_acceleration; proposal.angular_velocity = - fish->angular_velocity + turn_command * fish->max_angular_acceleration; + (float)fish->angular_velocity + + turn_command * (float)fish->max_angular_acceleration; proposal.linear_velocity = clamp( proposal.linear_velocity, - fish->min_linear_velocity, + (float)fish->min_linear_velocity, fish->max_linear_velocity ); - if (!fish->backwards && proposal.linear_velocity < 0.0) { - proposal.linear_velocity = 0.0; + if (!fish->backwards && proposal.linear_velocity < 0.0f) { + proposal.linear_velocity = 0.0f; } - proposal.linear_velocity *= fish->linear_drag_factor; - proposal.angular_velocity *= fish->angular_drag_factor; + proposal.linear_velocity *= (float)fish->linear_drag_factor; + proposal.angular_velocity *= (float)fish->angular_drag_factor; proposal.angular_velocity = clamp( proposal.angular_velocity, - fish->min_angular_velocity, + (float)fish->min_angular_velocity, fish->max_angular_velocity ); if (eating_frozen) { - proposal.linear_velocity = 0.0; - proposal.angular_velocity = 0.0; + proposal.linear_velocity = 0.0f; + proposal.angular_velocity = 0.0f; } } proposal.orientation = wrap_angle(fish->orientation + proposal.angular_velocity); - FishVec2 heading = { - cos(proposal.orientation), - sin(proposal.orientation) - }; + float hx = cosf(proposal.orientation); + float hy = sinf(proposal.orientation); proposal.position_cm = (FishVec2){ - fish->position_cm.x + heading.x * proposal.linear_velocity, - fish->position_cm.y + heading.y * proposal.linear_velocity, + (float)((float)fish->position_cm.x + hx * proposal.linear_velocity), + (float)((float)fish->position_cm.y + hy * proposal.linear_velocity), }; return proposal; } bool motion_collides( FishVec2 proposed_position_cm, - double body_radius_cm, + float body_radius_cm, const FishMovement* others, size_t num_others, size_t self_index @@ -244,7 +247,7 @@ bool motion_collides( if (i == self_index) { continue; } - double radius = body_radius_cm + others[i].body_radius_cm; + float radius = body_radius_cm + others[i].body_radius_cm; FishVec2 delta = { proposed_position_cm.x - others[i].position_cm.x, proposed_position_cm.y - others[i].position_cm.y, @@ -267,9 +270,9 @@ bool commit_motion( FishVec2 arena_size_cm ) { FishVec2 previous_position = fish->position_cm; - double previous_orientation = fish->orientation; + float previous_orientation = fish->orientation; - fish->last_orientation = previous_orientation; + fish->last_orientation = (float)previous_orientation; fish->orientation = proposal.orientation; if (!collided) { fish->position_cm = proposal.position_cm; @@ -290,8 +293,10 @@ bool commit_motion( bool stopped = collided || hit_wall; if (fish->motion_order == MOTION_SECOND_ORDER) { - fish->linear_velocity = stopped ? 0.0 : proposal.linear_velocity; - fish->angular_velocity = stopped ? 0.0 : proposal.angular_velocity; + fish->linear_velocity = + stopped ? 0.0f : (float)proposal.linear_velocity; + fish->angular_velocity = + stopped ? 0.0f : (float)proposal.angular_velocity; } fish->collided = collided; @@ -299,17 +304,18 @@ bool commit_motion( fish->position_cm.x - previous_position.x, fish->position_cm.y - previous_position.y, }; - fish->displacement_ego_cm = - rotate(fish->displacement_ground_cm, -previous_orientation); + fish->displacement_ego_cm = rotate( + fish->displacement_ground_cm, (float)(-previous_orientation) + ); return hit_wall; } bool point_in_forward_cone( FishVec2 position_cm, - double orientation, + float orientation, FishVec2 target_position_cm, - double radius_cm, - double cone_angle + float radius_cm, + float cone_angle ) { FishVec2 offset = { target_position_cm.x - position_cm.x, @@ -318,22 +324,22 @@ bool point_in_forward_cone( if (vec_length_squared(offset) >= radius_cm * radius_cm) { return false; } - double bearing = atan2(offset.y, offset.x); - return fabs(wrap_angle(bearing - orientation)) <= cone_angle * 0.5; + float bearing = atan2f(offset.y, offset.x); + return fabsf(wrap_angle(bearing - orientation)) <= cone_angle * 0.5f; } // Electrostatic field model FishMonopole transform_monopole( FishMonopole local, FishVec2 position_cm, - double orientation, + float orientation, bool emits_eod ) { FishMonopole world = { .position_cm = transform_position( local.position_cm, position_cm, orientation ), - .charge_c = emits_eod ? local.charge_c : 0.0, + .charge_c = emits_eod ? local.charge_c : 0.0f, }; return world; } @@ -349,13 +355,13 @@ FishVec2 measure_electric_field( size_t num_monopoles, const FishDipole* dipoles, size_t num_dipoles, - double eps_m + float eps_m ) { FishVec2 measurement_m = { measurement_position_cm.x * CM_TO_M, measurement_position_cm.y * CM_TO_M, }; - FishVec2 field = {0.0, 0.0}; + FishVec2 field = {0.0f, 0.0f}; for (size_t i = 0; i < num_monopoles; i++) { FishVec2 source_m = { @@ -366,8 +372,8 @@ FishVec2 measure_electric_field( measurement_m.x - source_m.x, measurement_m.y - source_m.y, }; - double distance = vec_length(offset) + eps_m; - double weight = + float distance = vec_length(offset) + eps_m; + float weight = K_COULOMB * monopoles[i].charge_c / (distance * distance * distance); field.x += offset.x * weight; @@ -383,14 +389,14 @@ FishVec2 measure_electric_field( measurement_m.x - source_m.x, measurement_m.y - source_m.y, }; - double distance = vec_length(offset) + eps_m; - double r2 = distance * distance; - double r3 = r2 * distance; - double r5 = r3 * r2; - double moment_dot_offset = + float distance = vec_length(offset) + eps_m; + float r2 = distance * distance; + float r3 = r2 * distance; + float r5 = r3 * r2; + float moment_dot_offset = dipoles[i].moment_c_m.x * offset.x + dipoles[i].moment_c_m.y * offset.y; - double axial = 3.0 * moment_dot_offset / r5; + float axial = 3.0f * moment_dot_offset / r5; field.x += K_COULOMB * ( offset.x * axial - dipoles[i].moment_c_m.x / r3 ); @@ -403,13 +409,13 @@ FishVec2 measure_electric_field( FishVec2 induce_dipole_moment( FishVec2 external_field_vm, - double conductor_radius_cm, - double conductor_contrast + float conductor_radius_cm, + float conductor_contrast ) { - double radius_m = conductor_radius_cm * CM_TO_M; - double volume_m3 = (4.0 / 3.0) * PI_D * radius_m * radius_m * radius_m; - double scale = - 3.0 * EPSILON_0 * volume_m3 * conductor_contrast; + float radius_m = conductor_radius_cm * CM_TO_M; + float volume_m3 = (4.0f / 3.0f) * PI_F * radius_m * radius_m * radius_m; + float scale = + 3.0f * EPSILON_0 * volume_m3 * conductor_contrast; return (FishVec2){ external_field_vm.x * scale, external_field_vm.y * scale, @@ -424,8 +430,8 @@ FishVec2 measure_electric_field_with_reflections( const FishDipole* dipoles, size_t num_dipoles, FishVec2 arena_size_cm, - double eps_m, - double reflection_scale, + float eps_m, + float reflection_scale, bool flip_on_reflection ) { FishVec2 field = measure_electric_field( @@ -441,15 +447,15 @@ FishVec2 measure_electric_field_with_reflections( image.position_cm.x = -image.position_cm.x; } else if (wall == WALL_RIGHT) { image.position_cm.x = - 2.0 * arena_size_cm.x - image.position_cm.x; + 2.0f * arena_size_cm.x - image.position_cm.x; } else if (wall == WALL_BOTTOM) { image.position_cm.y = -image.position_cm.y; } else { image.position_cm.y = - 2.0 * arena_size_cm.y - image.position_cm.y; + 2.0f * arena_size_cm.y - image.position_cm.y; } image.charge_c *= - reflection_scale * (flip_on_reflection ? -1.0 : 1.0); + reflection_scale * (flip_on_reflection ? -1.0f : 1.0f); FishVec2 contribution = measure_electric_field( measurement_position_cm, &image, 1, NULL, 0, eps_m ); @@ -465,7 +471,7 @@ FishVec2 measure_electric_field_with_reflections( } } else if (wall == WALL_RIGHT) { image.position_cm.x = - 2.0 * arena_size_cm.x - image.position_cm.x; + 2.0f * arena_size_cm.x - image.position_cm.x; if (flip_on_reflection) { image.moment_c_m.x = -image.moment_c_m.x; } @@ -476,7 +482,7 @@ FishVec2 measure_electric_field_with_reflections( } } else { image.position_cm.y = - 2.0 * arena_size_cm.y - image.position_cm.y; + 2.0f * arena_size_cm.y - image.position_cm.y; if (flip_on_reflection) { image.moment_c_m.y = -image.moment_c_m.y; } @@ -494,14 +500,17 @@ FishVec2 measure_electric_field_with_reflections( } // Receptor geometry and transduction -double +float project_field(FishVec2 field, FishVec2 sensor_normal) { - return field.x * sensor_normal.x + field.y * sensor_normal.y; + return (float)( + (float)field.x * (float)sensor_normal.x + + (float)field.y * (float)sensor_normal.y + ); } FishSensor -radial_sensor(double angle, double body_radius_cm) { - FishVec2 normal = {cos(angle), sin(angle)}; +radial_sensor(float angle, float body_radius_cm) { + FishVec2 normal = {cosf(angle), sinf(angle)}; FishSensor sensor = { .position_cm = { normal.x * body_radius_cm, @@ -512,62 +521,64 @@ radial_sensor(double angle, double body_radius_cm) { return sensor; } -double +float uniform_sensor_angle(size_t sensor_index, size_t num_sensors) { - return 2.0 * PI_D * (double)sensor_index / (double)num_sensors; + return 2.0f * PI_F * (float)sensor_index / (float)num_sensors; } /* * Mormyromast layout from sensing.calculate_mormyromast_angles: 30% of the * receptors span the forward-facing chin region, with the rest covering the - * remaining circumference. Pass num_chin=10, num_rest=26 for the default 36. + * remaining circumference. Pass num_chin=10, num_rest=26 for the default 36.f */ -double mormyromast_angle( +float mormyromast_angle( size_t sensor_index, size_t num_chin, size_t num_rest, - double chin_angle + float chin_angle ) { if (sensor_index < num_chin) { if (num_chin == 1) { - return 0.0; + return 0.0f; } - return -0.5 * chin_angle + - chin_angle * (double)sensor_index / (double)(num_chin - 1); + return -0.5f * chin_angle + + chin_angle * (float)sensor_index / (float)(num_chin - 1); } size_t rest_index = sensor_index - num_chin; if (num_rest == 1) { - return PI_D; + return PI_F; } - return 0.5 * chin_angle + - (2.0 * PI_D - chin_angle) * - (double)rest_index / (double)num_rest; + return 0.5f * chin_angle + + (2.0f * PI_F - chin_angle) * + (float)rest_index / (float)num_rest; } /* * Sign-preserving logarithmic normalization used by all receptor channels. * Values below threshold map to signed zero and values above maximum saturate. */ -double normalize_sensor_reading( - double reading, - double sensor_min, - double sensor_max, - double eps +float normalize_sensor_reading( + float reading, + float sensor_min, + float sensor_max, + float eps ) { - if (reading == 0.0) { - return 0.0; + if (reading == 0.0f) { + return 0.0f; } - double sign = reading < 0.0 ? -1.0 : 1.0; - double magnitude = fabs(reading); - magnitude = clamp(magnitude, sensor_min, sensor_max); - magnitude = fmax(magnitude, eps); - double denominator = log10(sensor_max) - log10(sensor_min); - if (denominator <= 0.0) { - return 0.0; + float r = (float)reading; + float sign = r < 0.0f ? -1.0f : 1.0f; + float magnitude = fabsf(r); + magnitude = clamp(magnitude, (float)sensor_min, (float)sensor_max); + magnitude = fmaxf(magnitude, (float)eps); + float denominator = + log10f((float)sensor_max) - log10f((float)sensor_min); + if (denominator <= 0.0f) { + return 0.0f; } - double normalized = - (log10(magnitude) - log10(sensor_min)) / denominator; - return sign * clamp(normalized, 0.0, 1.0); + float normalized = + (log10f(magnitude) - log10f((float)sensor_min)) / denominator; + return (float)(sign * clamp(normalized, 0.0f, 1.0f)); } typedef struct Log { @@ -598,15 +609,15 @@ typedef struct Client { typedef struct FishAgentState { FishMovement movement; - double size; - double bite_cooldown; - double eat_cooldown; + float size; + int bite_cooldown; /* remaining steps; 0 = ready */ + int eat_cooldown; /* remaining steps; 0 = free to move / eat */ bool emits_eod; bool bite_action; bool was_bitten; bool ate_food; float last_action[ACTION_SIZE]; - double ampullary_ema[NUM_AMPULLARY]; + float ampullary_ema[NUM_AMPULLARY]; } FishAgentState; typedef struct FishFood { @@ -636,15 +647,15 @@ typedef struct FishEnv { FishVec2 arena_size_cm; FishVec2 min_arena_size_cm; FishVec2 max_arena_size_cm; - double electric_field_radius_cm; + float electric_field_radius_cm; FoodDistribution food_distribution; FoodDistribution active_food_distribution; int configured_num_food; int fixed_num_patches; - double patch_radius_cm; - double patch_radius_std_cm; - double patch_density; - double placement_radius_frac; + float patch_radius_cm; + float patch_radius_std_cm; + float patch_density; + float placement_radius_frac; FishAgentState agents[MAX_AGENTS]; FishFood food[MAX_FOOD]; int num_food; @@ -658,35 +669,35 @@ typedef struct FishEnv { FishDipole induced_sources[MAX_AGENTS + MAX_FOOD]; int num_intrinsic_sources; int num_induced_sources; - double mormyromast_cd[NUM_MORMYROMASTS]; - double amp_intrinsic_baseline[NUM_AMPULLARY]; + float mormyromast_cd[NUM_MORMYROMASTS]; + float amp_intrinsic_baseline[NUM_AMPULLARY]; Client* client; } FishEnv; -double random_uniform(FishEnv* env, double low, double high) { - double unit = (double)rand_r(&env->rng) / (double)RAND_MAX; +float random_uniform(FishEnv* env, float low, float high) { + float unit = (float)rand_r(&env->rng) / (float)RAND_MAX; return low + (high - low) * unit; } -double random_multiplier(FishEnv* env, double fraction) { - return random_uniform(env, 1.0 - fraction, 1.0 + fraction); +float random_multiplier(FishEnv* env, float fraction) { + return (float)random_uniform(env, 1.0f - (float)fraction, 1.0f + (float)fraction); } void init(FishEnv* env) { if (env->num_agents <= 0) env->num_agents = 4; if (env->num_agents > MAX_AGENTS) env->num_agents = MAX_AGENTS; - if (env->arena_size_cm.x <= 0.0) env->arena_size_cm.x = 70.0; - if (env->arena_size_cm.y <= 0.0) env->arena_size_cm.y = 70.0; - if (env->min_arena_size_cm.x <= 0.0) { + if (env->arena_size_cm.x <= 0.0f) env->arena_size_cm.x = 70.0f; + if (env->arena_size_cm.y <= 0.0f) env->arena_size_cm.y = 70.0f; + if (env->min_arena_size_cm.x <= 0.0f) { env->min_arena_size_cm.x = env->arena_size_cm.x; } - if (env->min_arena_size_cm.y <= 0.0) { + if (env->min_arena_size_cm.y <= 0.0f) { env->min_arena_size_cm.y = env->arena_size_cm.y; } - if (env->max_arena_size_cm.x <= 0.0) { + if (env->max_arena_size_cm.x <= 0.0f) { env->max_arena_size_cm.x = env->min_arena_size_cm.x; } - if (env->max_arena_size_cm.y <= 0.0) { + if (env->max_arena_size_cm.y <= 0.0f) { env->max_arena_size_cm.y = env->min_arena_size_cm.y; } if (env->configured_num_food <= 0) env->configured_num_food = MAX_FOOD; @@ -694,20 +705,20 @@ void init(FishEnv* env) { env->configured_num_food = MAX_FOOD; } if (env->fixed_num_patches <= 0) env->fixed_num_patches = 4; - if (env->patch_radius_cm <= 0.0) env->patch_radius_cm = 6.0; - if (env->patch_radius_std_cm < 0.0) env->patch_radius_std_cm = 1.5; - if (env->patch_density <= 0.0) env->patch_density = 0.001; - if (env->placement_radius_frac <= 0.0) { - env->placement_radius_frac = 0.75; + if (env->patch_radius_cm <= 0.0f) env->patch_radius_cm = 6.0f; + if (env->patch_radius_std_cm < 0.0f) env->patch_radius_std_cm = 1.5f; + if (env->patch_density <= 0.0f) env->patch_density = 0.001f; + if (env->placement_radius_frac <= 0.0f) { + env->placement_radius_frac = 0.75f; } env->placement_radius_frac = - clamp(env->placement_radius_frac, 0.0, 1.0); + clamp(env->placement_radius_frac, 0.0f, 1.0f); if (env->food_distribution < FOOD_UNIFORM || env->food_distribution > FOOD_RANDOM) { env->food_distribution = FOOD_UNIFORM; } - if (env->electric_field_radius_cm <= 0.0) { - env->electric_field_radius_cm = 15.0; + if (env->electric_field_radius_cm <= 0.0f) { + env->electric_field_radius_cm = 15.0f; } if (env->episode_length <= 0) env->episode_length = 4096; if (env->rng == 0) env->rng = 1; @@ -730,12 +741,13 @@ void compute_observations(FishEnv* env) { /* Mormyromasts: active/collective image after direct-EOD subtraction. */ for (int sensor_idx = 0; sensor_idx < NUM_MORMYROMASTS; sensor_idx++) { - double angle = mormyromast_angle( - (size_t)sensor_idx, 10, 26, PI_D / 3.0 + float angle = mormyromast_angle( + (size_t)sensor_idx, 10, 26, PI_F / 3.0f ); FishSensor sensor = transform_sensor( radial_sensor(angle, agent->movement.body_radius_cm), - agent->movement.position_cm, agent->movement.orientation + agent->movement.position_cm, + (float)agent->movement.orientation ); FishVec2 induced = measure_electric_field_with_reflections( sensor.position_cm, NULL, 0, @@ -743,11 +755,11 @@ void compute_observations(FishEnv* env) { env->arena_size_cm, FIELD_EPS_M, REFLECTION_SCALE, false ); - double reading = project_field(induced, sensor.normal); + float reading = project_field(induced, sensor.normal); if (!agent->emits_eod) { - reading *= 100.0; + reading *= 100.0f; } - reading *= random_multiplier(env, 0.05); + reading *= random_multiplier(env, 0.05f); obs[cursor++] = (float)normalize_sensor_reading( reading, MORMYROMAST_MIN_VM, MORMYROMAST_MAX_VM, SENSOR_EPS @@ -757,12 +769,13 @@ void compute_observations(FishEnv* env) { // Ampullary receptors: intrinsic sources with static self-field removed for (int sensor_idx = 0; sensor_idx < NUM_AMPULLARY; sensor_idx++) { - double angle = uniform_sensor_angle( + float angle = uniform_sensor_angle( (size_t)sensor_idx, NUM_AMPULLARY ); FishSensor sensor = transform_sensor( radial_sensor(angle, agent->movement.body_radius_cm), - agent->movement.position_cm, agent->movement.orientation + agent->movement.position_cm, + (float)agent->movement.orientation ); FishVec2 field = measure_electric_field_with_reflections( sensor.position_cm, NULL, 0, @@ -770,7 +783,7 @@ void compute_observations(FishEnv* env) { env->arena_size_cm, FIELD_EPS_M, REFLECTION_SCALE, false ); - double reading = + float reading = project_field(field, sensor.normal) - env->amp_intrinsic_baseline[sensor_idx]; bool cons_eod = false; @@ -780,8 +793,8 @@ void compute_observations(FishEnv* env) { break; } } - reading *= random_multiplier(env, cons_eod ? 0.5 : 0.05); - double processed = normalize_sensor_reading( + reading *= random_multiplier(env, cons_eod ? 0.5f : 0.05f); + float processed = normalize_sensor_reading( reading, AMPULLARY_MIN_VM, AMPULLARY_MAX_VM, SENSOR_EPS ); @@ -798,9 +811,9 @@ void compute_observations(FishEnv* env) { bool valid = other < env->num_agents && env->agents[other].emits_eod; for (int sensor_idx = 0; sensor_idx < NUM_KNOLLEN; sensor_idx++) { - double value = 0.0; + float value = 0.0f; if (valid) { - double angle = uniform_sensor_angle( + float angle = uniform_sensor_angle( (size_t)sensor_idx, NUM_KNOLLEN ); FishSensor sensor = transform_sensor( @@ -808,19 +821,19 @@ void compute_observations(FishEnv* env) { angle, agent->movement.body_radius_cm ), agent->movement.position_cm, - agent->movement.orientation + (float)agent->movement.orientation ); FishVec2 field = measure_electric_field( sensor.position_cm, &env->eod_sources[2 * other], 2, NULL, 0, FIELD_EPS_M ); - double raw_knollen = + float raw_knollen = project_field(field, sensor.normal); - raw_knollen *= random_multiplier(env, 0.05); - value = fabs(raw_knollen) <= KNOLLEN_MIN_VM - ? 0.0 - : (raw_knollen < 0.0 ? -1.0 : 1.0); + raw_knollen *= random_multiplier(env, 0.05f); + value = fabsf(raw_knollen) <= KNOLLEN_MIN_VM + ? 0.0f + : (raw_knollen < 0.0f ? -1.0f : 1.0f); } obs[cursor++] = (float)value; } @@ -832,11 +845,11 @@ void compute_observations(FishEnv* env) { break; } } - double metadata = -1.0; + float metadata = -1.0f; if (valid && detected) { metadata = agent->size - env->agents[other].size; - metadata += random_uniform(env, -0.05, 0.05); - metadata = clamp(metadata, -1.0, 1.0); + metadata += random_uniform(env, -0.05f, 0.05f); + metadata = clamp(metadata, -1.0f, 1.0f); } obs[metadata_start + cons_slot] = (float)metadata; cons_slot++; @@ -853,29 +866,29 @@ void compute_observations(FishEnv* env) { obs[cursor++] = 0.0f; /* fatigue, retained for upstream layout */ obs[cursor++] = agent->was_bitten ? 1.0f : 0.0f; obs[cursor++] = (float)agent->size; - obs[cursor++] = (float)agent->bite_cooldown; + obs[cursor++] = + (float)agent->bite_cooldown / (float)BITE_COOLDOWN_STEPS; obs[cursor++] = (float)clamp( agent->movement.displacement_ego_cm.x / - agent->movement.max_linear_velocity, -1.0, 1.0 - ); + (float)agent->movement.max_linear_velocity, -1.0f, 1.0f); obs[cursor++] = (float)clamp( agent->movement.displacement_ego_cm.y / - agent->movement.max_linear_velocity, -1.0, 1.0 - ); - obs[cursor++] = (float)agent->eat_cooldown; + (float)agent->movement.max_linear_velocity, -1.0f, 1.0f); + obs[cursor++] = + (float)agent->eat_cooldown / (float)EAT_COOLDOWN_STEPS; } } bool position_overlaps_agents( - const FishEnv* env, FishVec2 position, int count, double radius + const FishEnv* env, FishVec2 position, int count, float radius ) { for (int i = 0; i < count; i++) { FishVec2 delta = { position.x - env->agents[i].movement.position_cm.x, position.y - env->agents[i].movement.position_cm.y, }; - double minimum = radius + env->agents[i].movement.body_radius_cm; + float minimum = radius + env->agents[i].movement.body_radius_cm; if (vec_length_squared(delta) < minimum * minimum) return true; } return false; @@ -887,8 +900,8 @@ position_overlaps_agents( */ void calibrate_electroreceptors(FishEnv* env) { FishVec2 center = { - env->arena_size_cm.x * 0.5, - env->arena_size_cm.y * 0.5, + env->arena_size_cm.x * 0.5f, + env->arena_size_cm.y * 0.5f, }; FishMonopole eod[2] = { { @@ -906,12 +919,12 @@ void calibrate_electroreceptors(FishEnv* env) { }; FishDipole intrinsic = { .position_cm = center, - .moment_c_m = {INTRINSIC_MOMENT_C_M, 0.0}, + .moment_c_m = {INTRINSIC_MOMENT_C_M, 0.0f}, }; for (int i = 0; i < NUM_MORMYROMASTS; i++) { - double angle = mormyromast_angle( - (size_t)i, 10, 26, PI_D / 3.0 + float angle = mormyromast_angle( + (size_t)i, 10, 26, PI_F / 3.0f ); FishSensor sensor = radial_sensor(angle, BODY_RADIUS_CM); sensor.position_cm.x += center.x; @@ -925,7 +938,7 @@ void calibrate_electroreceptors(FishEnv* env) { } for (int i = 0; i < NUM_AMPULLARY; i++) { - double angle = uniform_sensor_angle( + float angle = uniform_sensor_angle( (size_t)i, NUM_AMPULLARY ); FishSensor sensor = radial_sensor(angle, BODY_RADIUS_CM); @@ -947,26 +960,27 @@ void build_electric_scene(FishEnv* env) { for (int i = 0; i < env->num_agents; i++) { FishAgentState* agent = &env->agents[i]; FishMonopole positive = { - .position_cm = {EOD_POLE_OFFSET_CM, 0.0}, + .position_cm = {EOD_POLE_OFFSET_CM, 0.0f}, .charge_c = EOD_CHARGE_C, }; FishMonopole negative = { - .position_cm = {-EOD_POLE_OFFSET_CM, 0.0}, + .position_cm = {-EOD_POLE_OFFSET_CM, 0.0f}, .charge_c = -EOD_CHARGE_C, }; + float agent_ori = (float)agent->movement.orientation; env->eod_sources[2 * i] = transform_monopole( - positive, agent->movement.position_cm, agent->movement.orientation, + positive, agent->movement.position_cm, agent_ori, agent->emits_eod ); env->eod_sources[2 * i + 1] = transform_monopole( - negative, agent->movement.position_cm, agent->movement.orientation, + negative, agent->movement.position_cm, agent_ori, agent->emits_eod ); env->intrinsic_sources[env->num_intrinsic_sources++] = (FishDipole){ .position_cm = agent->movement.position_cm, .moment_c_m = rotate( - (FishVec2){INTRINSIC_MOMENT_C_M, 0.0}, - agent->movement.orientation + (FishVec2){INTRINSIC_MOMENT_C_M, 0.0f}, + agent_ori ), }; } @@ -976,7 +990,7 @@ void build_electric_scene(FishEnv* env) { FishDipole intrinsic = { .position_cm = env->food[i].motion.position_cm, .moment_c_m = rotate( - (FishVec2){0.0, FOOD_INTRINSIC_MOMENT_C_M}, + (FishVec2){0.0f, FOOD_INTRINSIC_MOMENT_C_M}, env->food[i].motion.orientation ), }; @@ -986,7 +1000,7 @@ void build_electric_scene(FishEnv* env) { // EOD fields induce dipoles on prey and agent bodies (Chen et al., Eq. 6) for (int i = 0; i < env->num_agents; i++) { FishVec2 position = env->agents[i].movement.position_cm; - FishVec2 moment = {0.0, 0.0}; + FishVec2 moment = {0.0f, 0.0f}; if (!env->agents[i].emits_eod) { FishVec2 field = measure_electric_field( position, env->eod_sources, (size_t)(2 * env->num_agents), @@ -997,11 +1011,11 @@ void build_electric_scene(FishEnv* env) { CONDUCTOR_CONTRAST ); } - double moment_magnitude = vec_length(moment); - double max_moment = + float moment_magnitude = vec_length(moment); + float max_moment = EOD_CHARGE_C * env->agents[i].movement.body_radius_cm; - if (EOD_CHARGE_C >= 0.0 && moment_magnitude > max_moment) { - double moment_scale = max_moment / moment_magnitude; + if (EOD_CHARGE_C >= 0.0f && moment_magnitude > max_moment) { + float moment_scale = max_moment / moment_magnitude; moment = (FishVec2){ moment.x * moment_scale, moment.y * moment_scale, @@ -1050,13 +1064,13 @@ void c_reset(FishEnv* env) { for (int i = 0; i < env->num_agents; i++) { FishAgentState agent = {0}; - agent.size = random_uniform(env, 0.0, 1.0); + agent.size = random_uniform(env, 0.0f, 1.0f); FishVec2 position; int attempts = 0; do { position = (FishVec2){ - random_uniform(env, 3.0, env->arena_size_cm.x - 3.0), - random_uniform(env, 3.0, env->arena_size_cm.y - 3.0) + (float)random_uniform(env, 3.0f, (float)env->arena_size_cm.x - 3.0f), + (float)random_uniform(env, 3.0f, (float)env->arena_size_cm.y - 3.0f) }; } while ( position_overlaps_agents( @@ -1065,26 +1079,26 @@ void c_reset(FishEnv* env) { ); agent.movement = (FishMovement){ .position_cm = position, - .orientation = random_uniform(env, -PI_D, PI_D), + .orientation = random_uniform(env, -PI_F, PI_F), + .max_linear_velocity = 35.0f / (float)SIMULATION_HZ, + .max_angular_velocity = 3.6f / (float)SIMULATION_HZ, .body_radius_cm = BODY_RADIUS_CM, - .min_linear_velocity = -5.0 / SIMULATION_HZ, - .max_linear_velocity = 35.0 / SIMULATION_HZ, - .max_linear_acceleration = 650.0 / (SIMULATION_HZ * SIMULATION_HZ), - .min_angular_velocity = -3.5 / SIMULATION_HZ, - .max_angular_velocity = 3.6 / SIMULATION_HZ, - .max_angular_acceleration = 318.0 / (SIMULATION_HZ * SIMULATION_HZ), - .linear_drag_factor = 0.95, - .angular_drag_factor = 0.95, + .min_linear_velocity = -5.0f / SIMULATION_HZ, + .max_linear_acceleration = 650.0f / (SIMULATION_HZ * SIMULATION_HZ), + .min_angular_velocity = -3.5f / SIMULATION_HZ, + .max_angular_acceleration = 318.0f / (SIMULATION_HZ * SIMULATION_HZ), + .linear_drag_factor = 0.95f, + .angular_drag_factor = 0.95f, .motion_order = MOTION_FIRST_ORDER, .backwards = false, }; - double size_multiplier = 1.0 + agent.size; - agent.movement.min_linear_velocity *= size_multiplier; + float size_multiplier = 1.0f + agent.size; + agent.movement.min_linear_velocity *= (float)size_multiplier; agent.movement.max_linear_velocity *= size_multiplier; - agent.movement.max_linear_acceleration *= size_multiplier; - agent.movement.min_angular_velocity *= size_multiplier; + agent.movement.max_linear_acceleration *= (float)size_multiplier; + agent.movement.min_angular_velocity *= (float)size_multiplier; agent.movement.max_angular_velocity *= size_multiplier; - agent.movement.max_angular_acceleration *= size_multiplier; + agent.movement.max_angular_acceleration *= (float)size_multiplier; agent.emits_eod = true; env->agents[i] = agent; env->rewards[i] = 0.0f; @@ -1092,33 +1106,33 @@ void c_reset(FishEnv* env) { } FishVec2 patch_centers[MAX_PATCHES]; - double patch_radii[MAX_PATCHES]; - double patch_weights[MAX_PATCHES]; + float patch_radii[MAX_PATCHES]; + float patch_weights[MAX_PATCHES]; int num_patches = 0; - double total_patch_weight = 0.0; - double minimum_edge = fmin(env->arena_size_cm.x, env->arena_size_cm.y); + float total_patch_weight = 0.0f; + float minimum_edge = fminf(env->arena_size_cm.x, env->arena_size_cm.y); if (env->active_food_distribution == FOOD_PATCHY) { - num_patches = (int)ceil( + num_patches = (int)ceilf( env->patch_density * env->arena_size_cm.x * env->arena_size_cm.y ); num_patches = (int)clamp(num_patches, 1, MAX_PATCHES); for (int i = 0; i < num_patches; i++) { patch_centers[i] = (FishVec2){ - random_uniform(env, 0.0, env->arena_size_cm.x), - random_uniform(env, 0.0, env->arena_size_cm.y), + random_uniform(env, 0.0f, env->arena_size_cm.x), + random_uniform(env, 0.0f, env->arena_size_cm.y), }; - double u1 = fmax( - random_uniform(env, 0.0, 1.0), 1.0 / (double)RAND_MAX + float u1 = fmaxf( + random_uniform(env, 0.0f, 1.0f), 1.0f / (float)RAND_MAX ); - double u2 = random_uniform(env, 0.0, 1.0); - double normal_sample = - sqrt(-2.0 * log(u1)) * cos(2.0 * PI_D * u2); + float u2 = random_uniform(env, 0.0f, 1.0f); + float normal_sample = + sqrtf(-2.0f * logf(u1)) * cosf(2.0f * PI_F * u2); patch_radii[i] = clamp( env->patch_radius_cm + normal_sample * env->patch_radius_std_cm, - 1.0, minimum_edge / 2.0 + 1.0f, minimum_edge / 2.0f ); patch_weights[i] = patch_radii[i] * patch_radii[i]; total_patch_weight += patch_weights[i]; @@ -1127,36 +1141,36 @@ void c_reset(FishEnv* env) { num_patches = (int)clamp( env->fixed_num_patches, 1, MAX_PATCHES ); - double initial_angle = random_uniform(env, 0.0, 2.0 * PI_D); + float initial_angle = random_uniform(env, 0.0f, 2.0f * PI_F); for (int i = 0; i < num_patches; i++) { - double angle = - initial_angle + 2.0 * PI_D * i / num_patches; + float angle = + initial_angle + 2.0f * PI_F * i / num_patches; patch_centers[i] = (FishVec2){ - env->arena_size_cm.x * 0.5 * - (1.0 + env->placement_radius_frac * cos(angle)), - env->arena_size_cm.y * 0.5 * - (1.0 + env->placement_radius_frac * sin(angle)), + env->arena_size_cm.x * 0.5f * + (1.0f + env->placement_radius_frac * cosf(angle)), + env->arena_size_cm.y * 0.5f * + (1.0f + env->placement_radius_frac * sinf(angle)), }; - patch_radii[i] = fmin(env->patch_radius_cm, minimum_edge / 2.0); + patch_radii[i] = fminf(env->patch_radius_cm, minimum_edge / 2.0f); patch_weights[i] = patch_radii[i] * patch_radii[i]; total_patch_weight += patch_weights[i]; } } else if (env->active_food_distribution == FOOD_ONE_PATCH) { num_patches = 1; patch_centers[0] = (FishVec2){ - env->arena_size_cm.x / 2.0, - env->arena_size_cm.y / 2.0, + env->arena_size_cm.x / 2.0f, + env->arena_size_cm.y / 2.0f, }; - double u1 = fmax( - random_uniform(env, 0.0, 1.0), 1.0 / (double)RAND_MAX + float u1 = fmaxf( + random_uniform(env, 0.0f, 1.0f), 1.0f / (float)RAND_MAX ); - double u2 = random_uniform(env, 0.0, 1.0); - double normal_sample = - sqrt(-2.0 * log(u1)) * cos(2.0 * PI_D * u2); + float u2 = random_uniform(env, 0.0f, 1.0f); + float normal_sample = + sqrtf(-2.0f * logf(u1)) * cosf(2.0f * PI_F * u2); patch_radii[0] = clamp( env->patch_radius_cm + normal_sample * env->patch_radius_std_cm, - 0.1, minimum_edge / 2.0 + 0.1f, minimum_edge / 2.0f ); patch_weights[0] = patch_radii[0] * patch_radii[0]; total_patch_weight = patch_weights[0]; @@ -1167,12 +1181,12 @@ void c_reset(FishEnv* env) { FishVec2 food_position; if (env->active_food_distribution == FOOD_UNIFORM) { food_position = (FishVec2){ - random_uniform(env, 0.0, env->arena_size_cm.x), - random_uniform(env, 0.0, env->arena_size_cm.y), + random_uniform(env, 0.0f, env->arena_size_cm.x), + random_uniform(env, 0.0f, env->arena_size_cm.y), }; } else { - double target = - random_uniform(env, 0.0, total_patch_weight); + float target = + random_uniform(env, 0.0f, total_patch_weight); int patch = 0; while (patch < num_patches - 1 && target > patch_weights[patch]) { @@ -1180,32 +1194,32 @@ void c_reset(FishEnv* env) { } int attempts = 0; do { - double angle = random_uniform(env, 0.0, 2.0 * PI_D); - double radius = patch_radii[patch] * sqrt( - random_uniform(env, 0.0, 1.0) + float angle = random_uniform(env, 0.0f, 2.0f * PI_F); + float radius = patch_radii[patch] * sqrtf( + random_uniform(env, 0.0f, 1.0f) ); food_position = (FishVec2){ - patch_centers[patch].x + radius * cos(angle), - patch_centers[patch].y + radius * sin(angle), + patch_centers[patch].x + radius * cosf(angle), + patch_centers[patch].y + radius * sinf(angle), }; } while ( - (food_position.x < 0.0 || + (food_position.x < 0.0f || food_position.x >= env->arena_size_cm.x || - food_position.y < 0.0 || + food_position.y < 0.0f || food_position.y >= env->arena_size_cm.y) && ++attempts < 1000 ); food_position.x = clamp( - food_position.x, 0.0, env->arena_size_cm.x + food_position.x, 0.0f, env->arena_size_cm.x ); food_position.y = clamp( - food_position.y, 0.0, env->arena_size_cm.y + food_position.y, 0.0f, env->arena_size_cm.y ); } env->food[i] = (FishFood){ .motion = { .position_cm = food_position, - .orientation = random_uniform(env, 0.0, 2.0 * PI_D), + .orientation = random_uniform(env, 0.0f, 2.0f * PI_F), }, .active = true, }; @@ -1229,18 +1243,19 @@ void add_log(FishEnv* env) { bool try_eat(FishEnv* env, int agent_idx) { FishAgentState* agent = &env->agents[agent_idx]; int nearest = -1; - double nearest_distance = INFINITY; + float nearest_distance = INFINITY; for (int i = 0; i < env->num_food; i++) { if (!env->food[i].active) continue; if (!point_in_forward_cone( - agent->movement.position_cm, agent->movement.orientation, + agent->movement.position_cm, + (float)agent->movement.orientation, env->food[i].motion.position_cm, EATING_RADIUS_CM, EATING_ANGLE)) continue; FishVec2 offset = { env->food[i].motion.position_cm.x - agent->movement.position_cm.x, env->food[i].motion.position_cm.y - agent->movement.position_cm.y, }; - double distance = vec_length_squared(offset); + float distance = vec_length_squared(offset); if (distance < nearest_distance) { nearest = i; nearest_distance = distance; @@ -1250,7 +1265,7 @@ bool try_eat(FishEnv* env, int agent_idx) { env->food[nearest].active = false; env->food_eaten++; agent->ate_food = true; - agent->eat_cooldown = 1.0; + agent->eat_cooldown = EAT_COOLDOWN_STEPS; return true; } @@ -1270,36 +1285,36 @@ void c_step(FishEnv* env) { FishFoodMotion* food = &env->food[food_idx].motion; food->position_cm.x = clamp( food->position_cm.x + food->velocity_cm.x, - 0.0, env->arena_size_cm.x + 0.0f, env->arena_size_cm.x ); food->position_cm.y = clamp( food->position_cm.y + food->velocity_cm.y, - 0.0, env->arena_size_cm.y + 0.0f, env->arena_size_cm.y ); } for (int i = 0; i < env->num_agents; i++) { FishAgentState* agent = &env->agents[i]; float* raw_action = env->actions + i * ACTION_SIZE; - double move = 1.0 / (1.0 + exp(-(double)raw_action[0])); - double turn = tanh((double)raw_action[1]); + float move = 1.0f / (1.0f + expf(-(float)raw_action[0])); + float turn = tanhf((float)raw_action[1]); agent->emits_eod = raw_action[2] > 0.0f; agent->bite_action = - raw_action[3] > 0.0f && agent->bite_cooldown <= 0.0; - if (agent->bite_action) agent->bite_cooldown = 1.0; + raw_action[3] > 0.0f && agent->bite_cooldown <= 0; + if (agent->bite_action) agent->bite_cooldown = BITE_COOLDOWN_STEPS; agent->last_action[0] = (float)move; agent->last_action[1] = (float)turn; agent->last_action[2] = agent->emits_eod ? 1.0f : 0.0f; agent->last_action[3] = agent->bite_action ? 1.0f : 0.0f; env->eod_agent_steps += agent->emits_eod ? 1 : 0; - if (!agent->bite_action && agent->eat_cooldown <= 0.0) { + if (!agent->bite_action && agent->eat_cooldown <= 0) { if (try_eat(env, i)) { env->rewards[i] += EAT_REWARD; } } FishMotionProposal proposal = propose_motion( - &agent->movement, move, turn, agent->eat_cooldown > 0.0 + &agent->movement, move, turn, agent->eat_cooldown > 0 ); FishMovement movement_views[MAX_AGENTS]; for (int j = 0; j < env->num_agents; j++) { @@ -1323,12 +1338,12 @@ void c_step(FishEnv* env) { FishAgentState* attacker = &env->agents[i]; if (!attacker->bite_action) continue; int victim = -1; - double nearest = INFINITY; + float nearest = INFINITY; for (int j = 0; j < env->num_agents; j++) { if (i == j) continue; if (!point_in_forward_cone( attacker->movement.position_cm, - attacker->movement.orientation, + (float)attacker->movement.orientation, env->agents[j].movement.position_cm, BITING_RADIUS_CM, EATING_ANGLE)) continue; FishVec2 offset = { @@ -1337,7 +1352,7 @@ void c_step(FishEnv* env) { env->agents[j].movement.position_cm.y - attacker->movement.position_cm.y, }; - double distance = vec_length_squared(offset); + float distance = vec_length_squared(offset); if (distance < nearest) { victim = j; nearest = distance; @@ -1345,17 +1360,15 @@ void c_step(FishEnv* env) { } if (victim >= 0) { env->agents[victim].was_bitten = true; - double size_difference = - attacker->size - env->agents[victim].size; - env->rewards[victim] += - BITTEN_REWARD * (float)(1.0 + fmax(0.0, size_difference)); + float size_difference = attacker->size - env->agents[victim].size; + env->rewards[victim] += BITTEN_REWARD * (float)(1.0f + fmaxf(0.0f, size_difference)); } } for (int i = 0; i < env->num_agents; i++) { FishAgentState* agent = &env->agents[i]; - agent->eat_cooldown = fmax(0.0, agent->eat_cooldown - 1.0 / 3.0); - agent->bite_cooldown = fmax(0.0, agent->bite_cooldown - 1.0 / 5.0); + if (agent->eat_cooldown > 0) agent->eat_cooldown -= 1; + if (agent->bite_cooldown > 0) agent->bite_cooldown -= 1; env->episode_return += env->rewards[i]; } build_electric_scene(env); @@ -1370,8 +1383,8 @@ void c_step(FishEnv* env) { Vector2 world_to_screen(const FishEnv* env, FishVec2 point_cm) { Client* client = env->client; - double usable_width = client->window_width - 2.0 * client->margin; - double usable_height = client->window_height - 2.0 * client->margin; + float usable_width = client->window_width - 2.0f * client->margin; + float usable_height = client->window_height - 2.0f * client->margin; Vector2 result = { (float)(client->margin + point_cm.x / env->arena_size_cm.x * usable_width), @@ -1383,11 +1396,11 @@ Vector2 world_to_screen(const FishEnv* env, FishVec2 point_cm) { float render_scale(const FishEnv* env) { Client* client = env->client; - double sx = (client->window_width - 2.0 * client->margin) / + float sx = (client->window_width - 2.0f * client->margin) / env->arena_size_cm.x; - double sy = (client->window_height - 2.0 * client->margin) / + float sy = (client->window_height - 2.0f * client->margin) / env->arena_size_cm.y; - return (float)fmin(sx, sy); + return (float)fminf(sx, sy); } Client* make_client(void) { @@ -1402,9 +1415,9 @@ Client* make_client(void) { return client; } -Color field_color(double log_strength) { - double normalized = clamp((log_strength + 8.0) / 7.0, 0.0, 1.0); - unsigned char shade = (unsigned char)(205.0 - 95.0 * normalized); +Color field_color(float log_strength) { + float normalized = clamp((log_strength + 8.0f) / 7.0f, 0.0f, 1.0f); + unsigned char shade = (unsigned char)(205.0f - 95.0f * normalized); return (Color){shade, shade, shade, 190}; } @@ -1418,17 +1431,15 @@ void render_field( for (int row = 0; row < rows; row++) { for (int column = 0; column < columns; column++) { FishVec2 position = { - env->arena_size_cm.x * (column + 0.5) / columns, - env->arena_size_cm.y * (row + 0.5) / rows + env->arena_size_cm.x * (column + 0.5f) / columns, + env->arena_size_cm.y * (row + 0.5f) / rows }; bool near_fish = false; - double radius_squared = + float radius_squared = env->electric_field_radius_cm * env->electric_field_radius_cm; for (int i = 0; i < env->num_agents; i++) { - double dx = - position.x - env->agents[i].movement.position_cm.x; - double dy = - position.y - env->agents[i].movement.position_cm.y; + float dx = position.x - env->agents[i].movement.position_cm.x; + float dy = position.y - env->agents[i].movement.position_cm.y; if (dx * dx + dy * dy <= radius_squared) { near_fish = true; break; @@ -1447,11 +1458,11 @@ void render_field( REFLECTION_SCALE, false ); - double strength = vec_length(field); - if (strength <= 0.0) continue; - double log_strength = log10(strength); - double arrow_length = 4.0 + 10.0 * - clamp((log_strength + 8.0) / 7.0, 0.0, 1.0); + float strength = vec_length(field); + if (strength <= 0.0f) continue; + float log_strength = log10f(strength); + float arrow_length = 4.0f + 10.0f * + clamp((log_strength + 8.0f) / 7.0f, 0.0f, 1.0f); FishVec2 direction = { field.x / strength, field.y / strength, @@ -1505,10 +1516,10 @@ void c_render(FishEnv* env) { ClearBackground(WHITE); Vector2 arena_min = world_to_screen( - env, (FishVec2){0.0, env->arena_size_cm.y} + env, (FishVec2){0.0f, env->arena_size_cm.y} ); Vector2 arena_max = world_to_screen( - env, (FishVec2){env->arena_size_cm.x, 0.0} + env, (FishVec2){env->arena_size_cm.x, 0.0f} ); DrawRectangleRec( (Rectangle){ @@ -1588,14 +1599,16 @@ void c_render(FishEnv* env) { if (env->client->show_sensors) { for (int sensor_idx = 0; sensor_idx < NUM_KNOLLEN; sensor_idx++) { - double angle = uniform_sensor_angle( + float angle = uniform_sensor_angle( (size_t)sensor_idx, NUM_KNOLLEN ); FishSensor sensor = radial_sensor( angle, fish->body_radius_cm ); sensor = transform_sensor( - sensor, fish->position_cm, fish->orientation + sensor, + fish->position_cm, + (float)fish->orientation ); DrawCircleV( world_to_screen(env, sensor.position_cm), From 12aaea88b3876353d59179264ae01e347a90bb2c Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Fri, 31 Jul 2026 16:53:14 -0400 Subject: [PATCH 11/20] Improve wall image reflections --- ocean/wef/wef.h | 150 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 103 insertions(+), 47 deletions(-) diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index c16bed6c1d..7736018e54 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -67,6 +67,9 @@ #define MORMYROMAST_MAX_VM 5e-2f #define KNOLLEN_MIN_VM 2e-7f +// Approximate influence range for first-order wall images (cm) for electric field calculations. +#define REFLECTION_WALL_RANGE_CM 100.0f + typedef struct FishVec2 { float x; float y; @@ -92,12 +95,12 @@ typedef enum FishMotionOrder { MOTION_SECOND_ORDER = 2, } FishMotionOrder; -typedef enum FishWall { - WALL_LEFT = 0, - WALL_RIGHT = 1, - WALL_BOTTOM = 2, - WALL_TOP = 3, -} FishWall; +/* Arena wall indices for first-order image charges. */ +#define WALL_LEFT 0 +#define WALL_RIGHT 1 +#define WALL_BOTTOM 2 +#define WALL_TOP 3 +#define NUM_WALLS 4 typedef struct FishMovement { FishVec2 position_cm; @@ -175,7 +178,6 @@ FishSensor transform_sensor(FishSensor local, FishVec2 origin_cm, float angle) { } // Biophysics and dynamics - FishMotionProposal propose_motion( const FishMovement* fish, float move_command, @@ -422,7 +424,64 @@ FishVec2 induce_dipole_moment( }; } -// Field from the original sources plus their four first-order wall images. +/* Perpendicular distance from a point to a rectangular arena wall. */ +static inline float distance_to_wall_cm( + FishVec2 position_cm, FishVec2 arena_size_cm, int wall +) { + if (wall == WALL_LEFT) return position_cm.x; + if (wall == WALL_RIGHT) return arena_size_cm.x - position_cm.x; + if (wall == WALL_BOTTOM) return position_cm.y; + if (wall == WALL_TOP) return arena_size_cm.y - position_cm.y; + return 0.0f; +} + +/* + * Reflect a source across one arena wall (shared by monopoles and dipoles). + * position_cm is always updated. If moment_c_m is non-NULL (dipole), its normal + * component is flipped when requested and both components are scaled. If + * charge_c is non-NULL (monopole), charge is scaled (and optionally sign-flipped). + */ +static inline void reflect_source_across_wall( + FishVec2* position_cm, + FishVec2* moment_c_m, + float* charge_c, + FishVec2 arena_size_cm, + int wall, + float reflection_scale, + bool flip_on_reflection +) { + if (wall == WALL_LEFT) { + position_cm->x = -position_cm->x; + if (moment_c_m != NULL && flip_on_reflection) { + moment_c_m->x = -moment_c_m->x; + } + } else if (wall == WALL_RIGHT) { + position_cm->x = 2.0f * arena_size_cm.x - position_cm->x; + if (moment_c_m != NULL && flip_on_reflection) { + moment_c_m->x = -moment_c_m->x; + } + } else if (wall == WALL_BOTTOM) { + position_cm->y = -position_cm->y; + if (moment_c_m != NULL && flip_on_reflection) { + moment_c_m->y = -moment_c_m->y; + } + } else if (wall == WALL_TOP) { + position_cm->y = 2.0f * arena_size_cm.y - position_cm->y; + if (moment_c_m != NULL && flip_on_reflection) { + moment_c_m->y = -moment_c_m->y; + } + } + + if (charge_c != NULL) { + *charge_c *= reflection_scale * (flip_on_reflection ? -1.0f : 1.0f); + } + if (moment_c_m != NULL) { + moment_c_m->x *= reflection_scale; + moment_c_m->y *= reflection_scale; + } +} + +// Field from the original sources plus first-order wall images (near walls only). FishVec2 measure_electric_field_with_reflections( FishVec2 measurement_position_cm, const FishMonopole* monopoles, @@ -440,22 +499,35 @@ FishVec2 measure_electric_field_with_reflections( dipoles, num_dipoles, eps_m ); - for (int wall = WALL_LEFT; wall <= WALL_TOP; wall++) { + + /* Collect wall indices within range once, then only loop those. */ + int near_walls[NUM_WALLS]; + int num_near_walls = 0; + for (int wall = 0; wall < NUM_WALLS; wall++) { + float dist = distance_to_wall_cm( + measurement_position_cm, arena_size_cm, wall + ); + if (dist <= REFLECTION_WALL_RANGE_CM) { + near_walls[num_near_walls++] = wall; + } + } + if (num_near_walls == 0) { + return field; + } + + for (int w = 0; w < num_near_walls; w++) { + int wall = near_walls[w]; for (size_t i = 0; i < num_monopoles; i++) { FishMonopole image = monopoles[i]; - if (wall == WALL_LEFT) { - image.position_cm.x = -image.position_cm.x; - } else if (wall == WALL_RIGHT) { - image.position_cm.x = - 2.0f * arena_size_cm.x - image.position_cm.x; - } else if (wall == WALL_BOTTOM) { - image.position_cm.y = -image.position_cm.y; - } else { - image.position_cm.y = - 2.0f * arena_size_cm.y - image.position_cm.y; - } - image.charge_c *= - reflection_scale * (flip_on_reflection ? -1.0f : 1.0f); + reflect_source_across_wall( + &image.position_cm, + NULL, + &image.charge_c, + arena_size_cm, + wall, + reflection_scale, + flip_on_reflection + ); FishVec2 contribution = measure_electric_field( measurement_position_cm, &image, 1, NULL, 0, eps_m ); @@ -464,31 +536,15 @@ FishVec2 measure_electric_field_with_reflections( } for (size_t i = 0; i < num_dipoles; i++) { FishDipole image = dipoles[i]; - if (wall == WALL_LEFT) { - image.position_cm.x = -image.position_cm.x; - if (flip_on_reflection) { - image.moment_c_m.x = -image.moment_c_m.x; - } - } else if (wall == WALL_RIGHT) { - image.position_cm.x = - 2.0f * arena_size_cm.x - image.position_cm.x; - if (flip_on_reflection) { - image.moment_c_m.x = -image.moment_c_m.x; - } - } else if (wall == WALL_BOTTOM) { - image.position_cm.y = -image.position_cm.y; - if (flip_on_reflection) { - image.moment_c_m.y = -image.moment_c_m.y; - } - } else { - image.position_cm.y = - 2.0f * arena_size_cm.y - image.position_cm.y; - if (flip_on_reflection) { - image.moment_c_m.y = -image.moment_c_m.y; - } - } - image.moment_c_m.x *= reflection_scale; - image.moment_c_m.y *= reflection_scale; + reflect_source_across_wall( + &image.position_cm, + &image.moment_c_m, + NULL, + arena_size_cm, + wall, + reflection_scale, + flip_on_reflection + ); FishVec2 contribution = measure_electric_field( measurement_position_cm, NULL, 0, &image, 1, eps_m ); From a7bb989de039360dd990227c76803d1013b07dbf Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Sat, 1 Aug 2026 11:40:16 -0400 Subject: [PATCH 12/20] Small simplification: We support uniform and patchy food distributions. --- config/wef.ini | 8 ++---- ocean/wef/binding.c | 2 -- ocean/wef/wef.h | 67 ++++++++------------------------------------- 3 files changed, 14 insertions(+), 63 deletions(-) diff --git a/config/wef.ini b/config/wef.ini index 0cba3648a1..1a16625e28 100644 --- a/config/wef.ini +++ b/config/wef.ini @@ -20,15 +20,13 @@ min_arena_width = 70 max_arena_width = 70 min_arena_height = 70 max_arena_height = 70 -# 0=uniform, 1=patchy, 2=n_patch, 3=one_patch, 4=random -food_distribution = 4 +# 0=uniform, 1=patchy, 2=random +food_distribution = 2 num_food = 64 -# N-patch parameters. Patchy and one-patch use the radius parameters. -num_patches = 4 +# Patchy distribution parameters. patch_radius = 6 patch_radius_std = 1.5 patch_density = 0.001 -placement_radius_frac = 0.75 electric_field_radius = 15 episode_length = 4096 diff --git a/ocean/wef/binding.c b/ocean/wef/binding.c index 1a02929435..d00b09302c 100644 --- a/ocean/wef/binding.c +++ b/ocean/wef/binding.c @@ -16,11 +16,9 @@ void my_init(Env* env, Dict* kwargs) { env->arena_size_cm = env->min_arena_size_cm; env->food_distribution = (FoodDistribution)(int)dict_get(kwargs, "food_distribution")->value; env->configured_num_food = (int)dict_get(kwargs, "num_food")->value; - env->fixed_num_patches = (int)dict_get(kwargs, "num_patches")->value; env->patch_radius_cm = dict_get(kwargs, "patch_radius")->value; env->patch_radius_std_cm = dict_get(kwargs, "patch_radius_std")->value; env->patch_density = dict_get(kwargs, "patch_density")->value; - env->placement_radius_frac = dict_get(kwargs, "placement_radius_frac")->value; env->electric_field_radius_cm = dict_get(kwargs, "electric_field_radius")->value; env->episode_length = (int)dict_get(kwargs, "episode_length")->value; init(env); diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index 7736018e54..9296d549b0 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -95,7 +95,7 @@ typedef enum FishMotionOrder { MOTION_SECOND_ORDER = 2, } FishMotionOrder; -/* Arena wall indices for first-order image charges. */ +// Arena wall indices for first-order image charges. #define WALL_LEFT 0 #define WALL_RIGHT 1 #define WALL_BOTTOM 2 @@ -684,8 +684,6 @@ typedef struct FishFood { typedef enum FoodDistribution { FOOD_UNIFORM, FOOD_PATCHY, - FOOD_N_PATCH, - FOOD_ONE_PATCH, FOOD_RANDOM, } FoodDistribution; @@ -707,11 +705,9 @@ typedef struct FishEnv { FoodDistribution food_distribution; FoodDistribution active_food_distribution; int configured_num_food; - int fixed_num_patches; float patch_radius_cm; float patch_radius_std_cm; float patch_density; - float placement_radius_frac; FishAgentState agents[MAX_AGENTS]; FishFood food[MAX_FOOD]; int num_food; @@ -760,15 +756,9 @@ void init(FishEnv* env) { if (env->configured_num_food > MAX_FOOD) { env->configured_num_food = MAX_FOOD; } - if (env->fixed_num_patches <= 0) env->fixed_num_patches = 4; if (env->patch_radius_cm <= 0.0f) env->patch_radius_cm = 6.0f; if (env->patch_radius_std_cm < 0.0f) env->patch_radius_std_cm = 1.5f; if (env->patch_density <= 0.0f) env->patch_density = 0.001f; - if (env->placement_radius_frac <= 0.0f) { - env->placement_radius_frac = 0.75f; - } - env->placement_radius_frac = - clamp(env->placement_radius_frac, 0.0f, 1.0f); if (env->food_distribution < FOOD_UNIFORM || env->food_distribution > FOOD_RANDOM) { env->food_distribution = FOOD_UNIFORM; @@ -1099,18 +1089,18 @@ void build_electric_scene(FishEnv* env) { void c_reset(FishEnv* env) { init(env); + + // Sample arena size env->arena_size_cm = (FishVec2){ - random_uniform( - env, env->min_arena_size_cm.x, env->max_arena_size_cm.x - ), - random_uniform( - env, env->min_arena_size_cm.y, env->max_arena_size_cm.y - ), + random_uniform(env, env->min_arena_size_cm.x, env->max_arena_size_cm.x), + random_uniform(env, env->min_arena_size_cm.y, env->max_arena_size_cm.y), }; + + // Sample food distribution (if random) and reset episode state env->active_food_distribution = env->food_distribution; if (env->food_distribution == FOOD_RANDOM) { env->active_food_distribution = - (FoodDistribution)(rand_r(&env->rng) % 4); + (FoodDistribution)(rand_r(&env->rng) % 2); } env->tick = 0; env->food_eaten = 0; @@ -1118,6 +1108,7 @@ void c_reset(FishEnv* env) { env->collisions_fish = 0; env->episode_return = 0.0f; + // Initialize agents with random positions and orientations, avoiding overlaps for (int i = 0; i < env->num_agents; i++) { FishAgentState agent = {0}; agent.size = random_uniform(env, 0.0f, 1.0f); @@ -1193,43 +1184,6 @@ void c_reset(FishEnv* env) { patch_weights[i] = patch_radii[i] * patch_radii[i]; total_patch_weight += patch_weights[i]; } - } else if (env->active_food_distribution == FOOD_N_PATCH) { - num_patches = (int)clamp( - env->fixed_num_patches, 1, MAX_PATCHES - ); - float initial_angle = random_uniform(env, 0.0f, 2.0f * PI_F); - for (int i = 0; i < num_patches; i++) { - float angle = - initial_angle + 2.0f * PI_F * i / num_patches; - patch_centers[i] = (FishVec2){ - env->arena_size_cm.x * 0.5f * - (1.0f + env->placement_radius_frac * cosf(angle)), - env->arena_size_cm.y * 0.5f * - (1.0f + env->placement_radius_frac * sinf(angle)), - }; - patch_radii[i] = fminf(env->patch_radius_cm, minimum_edge / 2.0f); - patch_weights[i] = patch_radii[i] * patch_radii[i]; - total_patch_weight += patch_weights[i]; - } - } else if (env->active_food_distribution == FOOD_ONE_PATCH) { - num_patches = 1; - patch_centers[0] = (FishVec2){ - env->arena_size_cm.x / 2.0f, - env->arena_size_cm.y / 2.0f, - }; - float u1 = fmaxf( - random_uniform(env, 0.0f, 1.0f), 1.0f / (float)RAND_MAX - ); - float u2 = random_uniform(env, 0.0f, 1.0f); - float normal_sample = - sqrtf(-2.0f * logf(u1)) * cosf(2.0f * PI_F * u2); - patch_radii[0] = clamp( - env->patch_radius_cm + - normal_sample * env->patch_radius_std_cm, - 0.1f, minimum_edge / 2.0f - ); - patch_weights[0] = patch_radii[0] * patch_radii[0]; - total_patch_weight = patch_weights[0]; } env->num_food = env->configured_num_food; @@ -1329,13 +1283,14 @@ void c_step(FishEnv* env) { env->tick++; // Reset agent state variables + // NOTE(DC): zeroing out rewards and terminals is already done in vecenv, shall we delete it here? for (int i = 0; i < env->num_agents; i++) { env->agents[i].was_bitten = false; env->agents[i].ate_food = false; env->rewards[i] = 0.0f; env->terminals[i] = 0.0f; } - + // What does this do? for (int food_idx = 0; food_idx < env->num_food; food_idx++) { if (!env->food[food_idx].active) continue; FishFoodMotion* food = &env->food[food_idx].motion; From b5b0cdc92a08c24bab6e07b961895ea45d40517a Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Sat, 1 Aug 2026 11:57:41 -0400 Subject: [PATCH 13/20] Simplify reset and make Food struct more readable. --- ocean/wef/wef.c | 5 +- ocean/wef/wef.h | 162 ++++++++++++++++++------------------------------ 2 files changed, 64 insertions(+), 103 deletions(-) diff --git a/ocean/wef/wef.c b/ocean/wef/wef.c index 05ccaf35de..cf91d43592 100644 --- a/ocean/wef/wef.c +++ b/ocean/wef/wef.c @@ -24,8 +24,9 @@ static void print_physics_fixture(FishEnv* env) { env->agents[1].movement.position_cm = (FishVec2){45.0, 40.0}; env->agents[1].movement.orientation = -1.0; env->agents[1].emits_eod = false; - env->food[0].motion.position_cm = (FishVec2){30.0, 25.0}; - env->food[0].motion.orientation = 0.7; + env->food[0].pos_x = 30.0f; + env->food[0].pos_y = 25.0f; + env->food[0].orientation = 0.7f; env->food[0].active = true; calibrate_electroreceptors(env); build_electric_scene(env); diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index 9296d549b0..e24d893d94 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -134,12 +134,6 @@ typedef struct FishMotionProposal { float angular_velocity; } FishMotionProposal; -typedef struct FishFoodMotion { - FishVec2 position_cm; - FishVec2 velocity_cm; - float orientation; -} FishFoodMotion; - float vec_length_squared(FishVec2 v) { return v.x * v.x + v.y * v.y; } @@ -677,7 +671,11 @@ typedef struct FishAgentState { } FishAgentState; typedef struct FishFood { - FishFoodMotion motion; + float pos_x; + float pos_y; + float vel_x; + float vel_y; + float orientation; bool active; } FishFood; @@ -703,7 +701,6 @@ typedef struct FishEnv { FishVec2 max_arena_size_cm; float electric_field_radius_cm; FoodDistribution food_distribution; - FoodDistribution active_food_distribution; int configured_num_food; float patch_radius_cm; float patch_radius_std_cm; @@ -1034,10 +1031,10 @@ void build_electric_scene(FishEnv* env) { for (int i = 0; i < env->num_food; i++) { if (!env->food[i].active) continue; FishDipole intrinsic = { - .position_cm = env->food[i].motion.position_cm, + .position_cm = {env->food[i].pos_x, env->food[i].pos_y}, .moment_c_m = rotate( (FishVec2){0.0f, FOOD_INTRINSIC_MOMENT_C_M}, - env->food[i].motion.orientation + env->food[i].orientation ), }; env->intrinsic_sources[env->num_intrinsic_sources++] = intrinsic; @@ -1073,7 +1070,7 @@ void build_electric_scene(FishEnv* env) { } for (int i = 0; i < env->num_food; i++) { if (!env->food[i].active) continue; - FishVec2 position = env->food[i].motion.position_cm; + FishVec2 position = {env->food[i].pos_x, env->food[i].pos_y}; FishVec2 field = measure_electric_field( position, env->eod_sources, (size_t)(2 * env->num_agents), NULL, 0, FIELD_EPS_M @@ -1096,11 +1093,10 @@ void c_reset(FishEnv* env) { random_uniform(env, env->min_arena_size_cm.y, env->max_arena_size_cm.y), }; - // Sample food distribution (if random) and reset episode state - env->active_food_distribution = env->food_distribution; - if (env->food_distribution == FOOD_RANDOM) { - env->active_food_distribution = - (FoodDistribution)(rand_r(&env->rng) % 2); + // FOOD_RANDOM picks uniform or patchy for this episode only + FoodDistribution mode = env->food_distribution; + if (mode == FOOD_RANDOM) { + mode = (FoodDistribution)(rand_r(&env->rng) % 2); } env->tick = 0; env->food_eaten = 0; @@ -1152,87 +1148,52 @@ void c_reset(FishEnv* env) { env->terminals[i] = 0.0f; } - FishVec2 patch_centers[MAX_PATCHES]; - float patch_radii[MAX_PATCHES]; - float patch_weights[MAX_PATCHES]; - int num_patches = 0; - float total_patch_weight = 0.0f; - float minimum_edge = fminf(env->arena_size_cm.x, env->arena_size_cm.y); - - if (env->active_food_distribution == FOOD_PATCHY) { - num_patches = (int)ceilf( - env->patch_density * - env->arena_size_cm.x * env->arena_size_cm.y - ); - num_patches = (int)clamp(num_patches, 1, MAX_PATCHES); - for (int i = 0; i < num_patches; i++) { - patch_centers[i] = (FishVec2){ - random_uniform(env, 0.0f, env->arena_size_cm.x), - random_uniform(env, 0.0f, env->arena_size_cm.y), + env->num_food = env->configured_num_food; + if (mode == FOOD_UNIFORM) { + for (int i = 0; i < env->num_food; i++) { + env->food[i] = (FishFood){ + .pos_x = random_uniform(env, 0.0f, env->arena_size_cm.x), + .pos_y = random_uniform(env, 0.0f, env->arena_size_cm.y), + .orientation = random_uniform(env, 0.0f, 2.0f * PI_F), + .active = true, }; - float u1 = fmaxf( - random_uniform(env, 0.0f, 1.0f), 1.0f / (float)RAND_MAX - ); - float u2 = random_uniform(env, 0.0f, 1.0f); - float normal_sample = - sqrtf(-2.0f * logf(u1)) * cosf(2.0f * PI_F * u2); - patch_radii[i] = clamp( - env->patch_radius_cm + - normal_sample * env->patch_radius_std_cm, - 1.0f, minimum_edge / 2.0f - ); - patch_weights[i] = patch_radii[i] * patch_radii[i]; - total_patch_weight += patch_weights[i]; } - } - - env->num_food = env->configured_num_food; - for (int i = 0; i < env->num_food; i++) { - FishVec2 food_position; - if (env->active_food_distribution == FOOD_UNIFORM) { - food_position = (FishVec2){ + } else { + // Patchy: random circular patches, food sampled uniformly in a patch disk + FishVec2 centers[MAX_PATCHES]; + float radii[MAX_PATCHES]; + float max_radius = + fminf(env->arena_size_cm.x, env->arena_size_cm.y) * 0.5f; + int num_patches = (int)clamp( + ceilf(env->patch_density * + env->arena_size_cm.x * env->arena_size_cm.y), + 1, MAX_PATCHES + ); + for (int p = 0; p < num_patches; p++) { + centers[p] = (FishVec2){ random_uniform(env, 0.0f, env->arena_size_cm.x), random_uniform(env, 0.0f, env->arena_size_cm.y), }; - } else { - float target = - random_uniform(env, 0.0f, total_patch_weight); - int patch = 0; - while (patch < num_patches - 1 && - target > patch_weights[patch]) { - target -= patch_weights[patch++]; - } - int attempts = 0; - do { - float angle = random_uniform(env, 0.0f, 2.0f * PI_F); - float radius = patch_radii[patch] * sqrtf( - random_uniform(env, 0.0f, 1.0f) - ); - food_position = (FishVec2){ - patch_centers[patch].x + radius * cosf(angle), - patch_centers[patch].y + radius * sinf(angle), - }; - } while ( - (food_position.x < 0.0f || - food_position.x >= env->arena_size_cm.x || - food_position.y < 0.0f || - food_position.y >= env->arena_size_cm.y) && - ++attempts < 1000 - ); - food_position.x = clamp( - food_position.x, 0.0f, env->arena_size_cm.x - ); - food_position.y = clamp( - food_position.y, 0.0f, env->arena_size_cm.y + radii[p] = clamp( + env->patch_radius_cm + random_uniform( + env, -env->patch_radius_std_cm, env->patch_radius_std_cm + ), + 1.0f, max_radius ); } - env->food[i] = (FishFood){ - .motion = { - .position_cm = food_position, + for (int i = 0; i < env->num_food; i++) { + int p = (int)(rand_r(&env->rng) % (unsigned)num_patches); + float angle = random_uniform(env, 0.0f, 2.0f * PI_F); + float r = radii[p] * sqrtf(random_uniform(env, 0.0f, 1.0f)); + env->food[i] = (FishFood){ + .pos_x = clamp(centers[p].x + r * cosf(angle), + 0.0f, env->arena_size_cm.x), + .pos_y = clamp(centers[p].y + r * sinf(angle), + 0.0f, env->arena_size_cm.y), .orientation = random_uniform(env, 0.0f, 2.0f * PI_F), - }, - .active = true, - }; + .active = true, + }; + } } calibrate_electroreceptors(env); build_electric_scene(env); @@ -1256,14 +1217,15 @@ bool try_eat(FishEnv* env, int agent_idx) { float nearest_distance = INFINITY; for (int i = 0; i < env->num_food; i++) { if (!env->food[i].active) continue; + FishVec2 food_pos = {env->food[i].pos_x, env->food[i].pos_y}; if (!point_in_forward_cone( agent->movement.position_cm, (float)agent->movement.orientation, - env->food[i].motion.position_cm, + food_pos, EATING_RADIUS_CM, EATING_ANGLE)) continue; FishVec2 offset = { - env->food[i].motion.position_cm.x - agent->movement.position_cm.x, - env->food[i].motion.position_cm.y - agent->movement.position_cm.y, + food_pos.x - agent->movement.position_cm.x, + food_pos.y - agent->movement.position_cm.y, }; float distance = vec_length_squared(offset); if (distance < nearest_distance) { @@ -1290,17 +1252,15 @@ void c_step(FishEnv* env) { env->rewards[i] = 0.0f; env->terminals[i] = 0.0f; } - // What does this do? + // Integrate food velocity (currently zero unless set elsewhere) for (int food_idx = 0; food_idx < env->num_food; food_idx++) { if (!env->food[food_idx].active) continue; - FishFoodMotion* food = &env->food[food_idx].motion; - food->position_cm.x = clamp( - food->position_cm.x + food->velocity_cm.x, - 0.0f, env->arena_size_cm.x + FishFood* food = &env->food[food_idx]; + food->pos_x = clamp( + food->pos_x + food->vel_x, 0.0f, env->arena_size_cm.x ); - food->position_cm.y = clamp( - food->position_cm.y + food->velocity_cm.y, - 0.0f, env->arena_size_cm.y + food->pos_y = clamp( + food->pos_y + food->vel_y, 0.0f, env->arena_size_cm.y ); } @@ -1566,7 +1526,7 @@ void c_render(FishEnv* env) { for (int i = 0; i < env->num_food; i++) { if (!env->food[i].active) continue; Vector2 position = world_to_screen( - env, env->food[i].motion.position_cm + env, (FishVec2){env->food[i].pos_x, env->food[i].pos_y} ); float radius = fmaxf(2.5f, (float)(FOOD_RADIUS_CM * scale)); DrawCircleV(position, radius, (Color){80, 220, 125, 255}); From d9c58e36176ec5d0cbca520d4b8d90e06c8d5cc0 Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Sat, 1 Aug 2026 12:03:36 -0400 Subject: [PATCH 14/20] Delete vel attributes from food struct: paper assumes food is static. --- ocean/wef/wef.h | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index e24d893d94..0092d8a152 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -673,8 +673,6 @@ typedef struct FishAgentState { typedef struct FishFood { float pos_x; float pos_y; - float vel_x; - float vel_y; float orientation; bool active; } FishFood; @@ -1252,18 +1250,6 @@ void c_step(FishEnv* env) { env->rewards[i] = 0.0f; env->terminals[i] = 0.0f; } - // Integrate food velocity (currently zero unless set elsewhere) - for (int food_idx = 0; food_idx < env->num_food; food_idx++) { - if (!env->food[food_idx].active) continue; - FishFood* food = &env->food[food_idx]; - food->pos_x = clamp( - food->pos_x + food->vel_x, 0.0f, env->arena_size_cm.x - ); - food->pos_y = clamp( - food->pos_y + food->vel_y, 0.0f, env->arena_size_cm.y - ); - } - for (int i = 0; i < env->num_agents; i++) { FishAgentState* agent = &env->agents[i]; float* raw_action = env->actions + i * ACTION_SIZE; From 650664b623c574e1a1ac325772a3080ff6c9bd92 Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Sat, 1 Aug 2026 12:40:30 -0400 Subject: [PATCH 15/20] Big refactor: Logically group information by fish as functional unit. --- ocean/wef/binding.c | 11 +- ocean/wef/wef.c | 108 +++- ocean/wef/wef.h | 1326 ++++++++++++++++++++++--------------------- 3 files changed, 782 insertions(+), 663 deletions(-) diff --git a/ocean/wef/binding.c b/ocean/wef/binding.c index d00b09302c..d8340e19dd 100644 --- a/ocean/wef/binding.c +++ b/ocean/wef/binding.c @@ -9,11 +9,12 @@ void my_init(Env* env, Dict* kwargs) { env->num_agents = (int)dict_get(kwargs, "num_agents")->value; - env->min_arena_size_cm.x = dict_get(kwargs, "min_arena_width")->value; - env->min_arena_size_cm.y = dict_get(kwargs, "min_arena_height")->value; - env->max_arena_size_cm.x = dict_get(kwargs, "max_arena_width")->value; - env->max_arena_size_cm.y = dict_get(kwargs, "max_arena_height")->value; - env->arena_size_cm = env->min_arena_size_cm; + env->min_arena_size_x = dict_get(kwargs, "min_arena_width")->value; + env->min_arena_size_y = dict_get(kwargs, "min_arena_height")->value; + env->max_arena_size_x = dict_get(kwargs, "max_arena_width")->value; + env->max_arena_size_y = dict_get(kwargs, "max_arena_height")->value; + env->arena_size_x = env->min_arena_size_x; + env->arena_size_y = env->min_arena_size_y; env->food_distribution = (FoodDistribution)(int)dict_get(kwargs, "food_distribution")->value; env->configured_num_food = (int)dict_get(kwargs, "num_food")->value; env->patch_radius_cm = dict_get(kwargs, "patch_radius")->value; diff --git a/ocean/wef/wef.c b/ocean/wef/wef.c index cf91d43592..b04c6837b4 100644 --- a/ocean/wef/wef.c +++ b/ocean/wef/wef.c @@ -18,11 +18,13 @@ static float random_action(unsigned int* rng) { static void print_physics_fixture(FishEnv* env) { env->num_agents = 2; env->num_food = 1; - env->agents[0].movement.position_cm = (FishVec2){20.0, 20.0}; - env->agents[0].movement.orientation = 0.25; + env->agents[0].pos_x = 20.0f; + env->agents[0].pos_y = 20.0f; + env->agents[0].orientation = 0.25f; env->agents[0].emits_eod = true; - env->agents[1].movement.position_cm = (FishVec2){45.0, 40.0}; - env->agents[1].movement.orientation = -1.0; + env->agents[1].pos_x = 45.0f; + env->agents[1].pos_y = 40.0f; + env->agents[1].orientation = -1.0f; env->agents[1].emits_eod = false; env->food[0].pos_x = 30.0f; env->food[0].pos_y = 25.0f; @@ -31,34 +33,87 @@ static void print_physics_fixture(FishEnv* env) { calibrate_electroreceptors(env); build_electric_scene(env); - FishVec2 query = {35.0, 30.0}; - FishVec2 eod = measure_electric_field_with_reflections( - query, env->eod_sources, 4, NULL, 0, - env->arena_size_cm, FIELD_EPS_M, - REFLECTION_SCALE, false + float mono_x[4], mono_y[4], mono_q[4]; + float dip_x[MAX_AGENTS + MAX_FOOD]; + float dip_y[MAX_AGENTS + MAX_FOOD]; + float dip_mx[MAX_AGENTS + MAX_FOOD]; + float dip_my[MAX_AGENTS + MAX_FOOD]; + int n_mono = 0; + for (int i = 0; i < env->num_agents; i++) { + for (int p = 0; p < 2; p++) { + mono_x[n_mono] = env->agents[i].eod_pos_x[p]; + mono_y[n_mono] = env->agents[i].eod_pos_y[p]; + mono_q[n_mono] = env->agents[i].eod_charge[p]; + n_mono++; + } + } + int n_intr = 0; + for (int i = 0; i < env->num_agents; i++) { + dip_x[n_intr] = env->agents[i].pos_x; + dip_y[n_intr] = env->agents[i].pos_y; + dip_mx[n_intr] = env->agents[i].intrinsic_moment_x; + dip_my[n_intr] = env->agents[i].intrinsic_moment_y; + n_intr++; + } + if (env->food[0].active) { + dip_x[n_intr] = env->food[0].pos_x; + dip_y[n_intr] = env->food[0].pos_y; + dip_mx[n_intr] = env->food[0].intrinsic_moment_x; + dip_my[n_intr] = env->food[0].intrinsic_moment_y; + n_intr++; + } + int n_ind = 0; + float ind_x[MAX_AGENTS + MAX_FOOD]; + float ind_y[MAX_AGENTS + MAX_FOOD]; + float ind_mx[MAX_AGENTS + MAX_FOOD]; + float ind_my[MAX_AGENTS + MAX_FOOD]; + for (int i = 0; i < env->num_agents; i++) { + ind_x[n_ind] = env->agents[i].pos_x; + ind_y[n_ind] = env->agents[i].pos_y; + ind_mx[n_ind] = env->agents[i].induced_moment_x; + ind_my[n_ind] = env->agents[i].induced_moment_y; + n_ind++; + } + if (env->food[0].active) { + ind_x[n_ind] = env->food[0].pos_x; + ind_y[n_ind] = env->food[0].pos_y; + ind_mx[n_ind] = env->food[0].induced_moment_x; + ind_my[n_ind] = env->food[0].induced_moment_y; + n_ind++; + } + + float eod_x, eod_y, intrinsic_x, intrinsic_y, induced_x, induced_y; + measure_electric_field_with_reflections( + 35.0f, 30.0f, + mono_x, mono_y, mono_q, (size_t)n_mono, + NULL, NULL, NULL, NULL, 0, + env->arena_size_x, env->arena_size_y, FIELD_EPS_M, + REFLECTION_SCALE, false, &eod_x, &eod_y ); - FishVec2 intrinsic = measure_electric_field_with_reflections( - query, NULL, 0, env->intrinsic_sources, - (size_t)env->num_intrinsic_sources, - env->arena_size_cm, FIELD_EPS_M, - REFLECTION_SCALE, false + measure_electric_field_with_reflections( + 35.0f, 30.0f, + NULL, NULL, NULL, 0, + dip_x, dip_y, dip_mx, dip_my, (size_t)n_intr, + env->arena_size_x, env->arena_size_y, FIELD_EPS_M, + REFLECTION_SCALE, false, &intrinsic_x, &intrinsic_y ); - FishVec2 induced = measure_electric_field_with_reflections( - query, NULL, 0, env->induced_sources, - (size_t)env->num_induced_sources, - env->arena_size_cm, FIELD_EPS_M, - REFLECTION_SCALE, false + measure_electric_field_with_reflections( + 35.0f, 30.0f, + NULL, NULL, NULL, 0, + ind_x, ind_y, ind_mx, ind_my, (size_t)n_ind, + env->arena_size_x, env->arena_size_y, FIELD_EPS_M, + REFLECTION_SCALE, false, &induced_x, &induced_y ); printf( "{\"eod\":[%.17g,%.17g],\"intrinsic\":[%.17g,%.17g]," "\"induced\":[%.17g,%.17g],\"induced_fish\":[%.17g,%.17g]," "\"induced_food\":[%.17g,%.17g],\"morm_cd0\":%.17g," "\"amp_baseline0\":%.17g}\n", - eod.x, eod.y, intrinsic.x, intrinsic.y, induced.x, induced.y, - env->induced_sources[1].moment_c_m.x, - env->induced_sources[1].moment_c_m.y, - env->induced_sources[2].moment_c_m.x, - env->induced_sources[2].moment_c_m.y, + eod_x, eod_y, intrinsic_x, intrinsic_y, induced_x, induced_y, + env->agents[1].induced_moment_x, + env->agents[1].induced_moment_y, + env->food[0].induced_moment_x, + env->food[0].induced_moment_y, env->mormyromast_cd[0], env->amp_intrinsic_baseline[0] ); } @@ -66,8 +121,9 @@ static void print_physics_fixture(FishEnv* env) { int main(int argc, char** argv) { FishEnv env = { .num_agents = 4, - .arena_size_cm = {70.0, 70.0}, - .electric_field_radius_cm = 15.0, + .arena_size_x = 70.0f, + .arena_size_y = 70.0f, + .electric_field_radius_cm = 15.0f, .episode_length = 4096, .rng = (unsigned int)time(NULL), }; diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index 0092d8a152..bb315f9db5 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -67,33 +67,12 @@ #define MORMYROMAST_MAX_VM 5e-2f #define KNOLLEN_MIN_VM 2e-7f -// Approximate influence range for first-order wall images (cm) for electric field calculations. +// Approximate influence range for first-order +// wall images (cm) for electric field calculations. #define REFLECTION_WALL_RANGE_CM 100.0f -typedef struct FishVec2 { - float x; - float y; -} FishVec2; - -typedef struct FishMonopole { - FishVec2 position_cm; - float charge_c; -} FishMonopole; - -typedef struct FishDipole { - FishVec2 position_cm; - FishVec2 moment_c_m; -} FishDipole; - -typedef struct FishSensor { - FishVec2 position_cm; - FishVec2 normal; -} FishSensor; - -typedef enum FishMotionOrder { - MOTION_FIRST_ORDER = 1, - MOTION_SECOND_ORDER = 2, -} FishMotionOrder; +#define MOTION_FIRST_ORDER 1 +#define MOTION_SECOND_ORDER 2 // Arena wall indices for first-order image charges. #define WALL_LEFT 0 @@ -102,14 +81,27 @@ typedef enum FishMotionOrder { #define WALL_TOP 3 #define NUM_WALLS 4 -typedef struct FishMovement { - FishVec2 position_cm; +/* Temporary propose/commit payload for agent motion. */ +typedef struct FishMotionProposal { + float pos_x; + float pos_y; + float orientation; + float linear_velocity; + float angular_velocity; +} FishMotionProposal; + +/* All per-fish state: pose, dynamics, electric sources, sensors, actions. */ +typedef struct FishAgent { + float pos_x; + float pos_y; float orientation; float max_linear_velocity; float max_angular_velocity; - FishVec2 displacement_ground_cm; - FishVec2 displacement_ego_cm; + float disp_ground_x; + float disp_ground_y; + float disp_ego_x; + float disp_ego_y; float last_orientation; float linear_velocity; float angular_velocity; @@ -125,21 +117,49 @@ typedef struct FishMovement { int motion_order; bool backwards; bool collided; -} FishMovement; -typedef struct FishMotionProposal { - FishVec2 position_cm; - float orientation; - float linear_velocity; - float angular_velocity; -} FishMotionProposal; + float size; + int bite_cooldown; /* remaining steps; 0 = ready */ + int eat_cooldown; /* remaining steps; 0 = free to move / eat */ + bool emits_eod; + bool bite_action; + bool was_bitten; + bool ate_food; + float last_action[ACTION_SIZE]; + float ampullary_ema[NUM_AMPULLARY]; -float vec_length_squared(FishVec2 v) { - return v.x * v.x + v.y * v.y; + /* EOD monopole pair in world frame (updated each scene rebuild). */ + float eod_pos_x[2]; + float eod_pos_y[2]; + float eod_charge[2]; + + /* Body dipoles in world frame (position is agent pos). */ + float intrinsic_moment_x; + float intrinsic_moment_y; + float induced_moment_x; + float induced_moment_y; + + /* Local body-frame sensor geometry (set once at spawn). */ + float morm_local_x[NUM_MORMYROMASTS]; + float morm_local_y[NUM_MORMYROMASTS]; + float morm_nx[NUM_MORMYROMASTS]; + float morm_ny[NUM_MORMYROMASTS]; + float amp_local_x[NUM_AMPULLARY]; + float amp_local_y[NUM_AMPULLARY]; + float amp_nx[NUM_AMPULLARY]; + float amp_ny[NUM_AMPULLARY]; + float knollen_local_x[NUM_KNOLLEN]; + float knollen_local_y[NUM_KNOLLEN]; + float knollen_nx[NUM_KNOLLEN]; + float knollen_ny[NUM_KNOLLEN]; +} FishAgent; + +float vec_length_squared(float x, float y) { + return x * x + y * y; } -float vec_length(FishVec2 v) { - return sqrtf(vec_length_squared(v)); +float vec_length(float x, float y) { + return sqrtf(vec_length_squared(x, y)); } float clamp(float value, float minimum, float maximum) { @@ -152,34 +172,48 @@ float wrap_angle(float angle) { } /* Rotate a vector; add translation separately when transforming a position. */ -FishVec2 rotate(FishVec2 v, float angle) { +void rotate(float x, float y, float angle, float* out_x, float* out_y) { float c = cosf(angle); float s = sinf(angle); - return (FishVec2){c * v.x - s * v.y, s * v.x + c * v.y}; + *out_x = c * x - s * y; + *out_y = s * x + c * y; } -FishVec2 transform_position(FishVec2 local_cm, FishVec2 origin_cm, float angle) { - FishVec2 rotated = rotate(local_cm, angle); - return (FishVec2){rotated.x + origin_cm.x, rotated.y + origin_cm.y}; +void transform_position( + float local_x, float local_y, + float origin_x, float origin_y, + float angle, + float* out_x, float* out_y +) { + float rx, ry; + rotate(local_x, local_y, angle, &rx, &ry); + *out_x = rx + origin_x; + *out_y = ry + origin_y; } -FishSensor transform_sensor(FishSensor local, FishVec2 origin_cm, float angle) { - FishSensor world = { - .position_cm = transform_position(local.position_cm, origin_cm, angle), - .normal = rotate(local.normal, angle), - }; - return world; +void world_sensor( + float local_x, float local_y, + float local_nx, float local_ny, + float origin_x, float origin_y, + float angle, + float* out_x, float* out_y, + float* out_nx, float* out_ny +) { + transform_position( + local_x, local_y, origin_x, origin_y, angle, out_x, out_y + ); + rotate(local_nx, local_ny, angle, out_nx, out_ny); } -// Biophysics and dynamics FishMotionProposal propose_motion( - const FishMovement* fish, + const FishAgent* fish, float move_command, float turn_command, bool eating_frozen ) { FishMotionProposal proposal = { - .position_cm = fish->position_cm, + .pos_x = fish->pos_x, + .pos_y = fish->pos_y, .orientation = fish->orientation, .linear_velocity = 0.0f, .angular_velocity = 0.0f, @@ -190,28 +224,28 @@ FishMotionProposal propose_motion( float turn = eating_frozen ? 0.0f : turn_command; proposal.angular_velocity = turn * fish->max_angular_velocity; proposal.linear_velocity = move * fish->max_linear_velocity; - } else { + } else { // Second-order motion with acceleration and drag proposal.linear_velocity = - (float)fish->linear_velocity + - move_command * (float)fish->max_linear_acceleration; + fish->linear_velocity + + move_command * fish->max_linear_acceleration; proposal.angular_velocity = - (float)fish->angular_velocity + - turn_command * (float)fish->max_angular_acceleration; + fish->angular_velocity + + turn_command * fish->max_angular_acceleration; proposal.linear_velocity = clamp( proposal.linear_velocity, - (float)fish->min_linear_velocity, + fish->min_linear_velocity, fish->max_linear_velocity ); if (!fish->backwards && proposal.linear_velocity < 0.0f) { proposal.linear_velocity = 0.0f; } - proposal.linear_velocity *= (float)fish->linear_drag_factor; - proposal.angular_velocity *= (float)fish->angular_drag_factor; + proposal.linear_velocity *= fish->linear_drag_factor; + proposal.angular_velocity *= fish->angular_drag_factor; proposal.angular_velocity = clamp( proposal.angular_velocity, - (float)fish->min_angular_velocity, + fish->min_angular_velocity, fish->max_angular_velocity ); @@ -221,21 +255,19 @@ FishMotionProposal propose_motion( } } - proposal.orientation = - wrap_angle(fish->orientation + proposal.angular_velocity); + proposal.orientation = wrap_angle(fish->orientation + proposal.angular_velocity); float hx = cosf(proposal.orientation); float hy = sinf(proposal.orientation); - proposal.position_cm = (FishVec2){ - (float)((float)fish->position_cm.x + hx * proposal.linear_velocity), - (float)((float)fish->position_cm.y + hy * proposal.linear_velocity), - }; + proposal.pos_x = fish->pos_x + hx * proposal.linear_velocity; + proposal.pos_y = fish->pos_y + hy * proposal.linear_velocity; return proposal; } bool motion_collides( - FishVec2 proposed_position_cm, + float proposed_x, + float proposed_y, float body_radius_cm, - const FishMovement* others, + const FishAgent* others, size_t num_others, size_t self_index ) { @@ -244,11 +276,9 @@ bool motion_collides( continue; } float radius = body_radius_cm + others[i].body_radius_cm; - FishVec2 delta = { - proposed_position_cm.x - others[i].position_cm.x, - proposed_position_cm.y - others[i].position_cm.y, - }; - if (vec_length_squared(delta) < radius * radius) { + float dx = proposed_x - others[i].pos_x; + float dy = proposed_y - others[i].pos_y; + if (vec_length_squared(dx, dy) < radius * radius) { return true; } } @@ -260,315 +290,291 @@ bool motion_collides( * changes even when translation is blocked, allowing turning in place. */ bool commit_motion( - FishMovement* fish, + FishAgent* fish, FishMotionProposal proposal, bool collided, - FishVec2 arena_size_cm + float arena_size_x, + float arena_size_y ) { - FishVec2 previous_position = fish->position_cm; + float previous_x = fish->pos_x; + float previous_y = fish->pos_y; float previous_orientation = fish->orientation; - fish->last_orientation = (float)previous_orientation; + fish->last_orientation = previous_orientation; fish->orientation = proposal.orientation; if (!collided) { - fish->position_cm = proposal.position_cm; + fish->pos_x = proposal.pos_x; + fish->pos_y = proposal.pos_y; } - FishVec2 unclipped = fish->position_cm; - fish->position_cm.x = clamp( - fish->position_cm.x, + float unclipped_x = fish->pos_x; + float unclipped_y = fish->pos_y; + fish->pos_x = clamp( + fish->pos_x, fish->body_radius_cm, - arena_size_cm.x - fish->body_radius_cm + arena_size_x - fish->body_radius_cm ); - fish->position_cm.y = clamp( - fish->position_cm.y, + fish->pos_y = clamp( + fish->pos_y, fish->body_radius_cm, - arena_size_cm.y - fish->body_radius_cm + arena_size_y - fish->body_radius_cm ); - bool hit_wall = fish->position_cm.x != unclipped.x || fish->position_cm.y != unclipped.y; + bool hit_wall = fish->pos_x != unclipped_x || fish->pos_y != unclipped_y; bool stopped = collided || hit_wall; if (fish->motion_order == MOTION_SECOND_ORDER) { fish->linear_velocity = - stopped ? 0.0f : (float)proposal.linear_velocity; + stopped ? 0.0f : proposal.linear_velocity; fish->angular_velocity = - stopped ? 0.0f : (float)proposal.angular_velocity; + stopped ? 0.0f : proposal.angular_velocity; } fish->collided = collided; - fish->displacement_ground_cm = (FishVec2){ - fish->position_cm.x - previous_position.x, - fish->position_cm.y - previous_position.y, - }; - fish->displacement_ego_cm = rotate( - fish->displacement_ground_cm, (float)(-previous_orientation) + fish->disp_ground_x = fish->pos_x - previous_x; + fish->disp_ground_y = fish->pos_y - previous_y; + rotate( + fish->disp_ground_x, fish->disp_ground_y, + -previous_orientation, + &fish->disp_ego_x, &fish->disp_ego_y ); return hit_wall; } bool point_in_forward_cone( - FishVec2 position_cm, + float pos_x, + float pos_y, float orientation, - FishVec2 target_position_cm, + float target_x, + float target_y, float radius_cm, float cone_angle ) { - FishVec2 offset = { - target_position_cm.x - position_cm.x, - target_position_cm.y - position_cm.y, - }; - if (vec_length_squared(offset) >= radius_cm * radius_cm) { + float dx = target_x - pos_x; + float dy = target_y - pos_y; + if (vec_length_squared(dx, dy) >= radius_cm * radius_cm) { return false; } - float bearing = atan2f(offset.y, offset.x); + float bearing = atan2f(dy, dx); return fabsf(wrap_angle(bearing - orientation)) <= cone_angle * 0.5f; } // Electrostatic field model -FishMonopole transform_monopole( - FishMonopole local, - FishVec2 position_cm, - float orientation, - bool emits_eod -) { - FishMonopole world = { - .position_cm = transform_position( - local.position_cm, position_cm, orientation - ), - .charge_c = emits_eod ? local.charge_c : 0.0f, - }; - return world; -} - /* - * Add fields from arbitrary monopoles and dipoles at one measurement point. - * This follows electric.measure_electric_field_original exactly, including - * adding eps_m to the distance rather than to squared distance. + * Field from monopole and dipole sources (SoA). Matches + * electric.measure_electric_field_original, including adding eps_m to + * distance rather than squared distance. Writes V/m into out_x/out_y. */ -FishVec2 measure_electric_field( - FishVec2 measurement_position_cm, - const FishMonopole* monopoles, +void measure_electric_field( + float measurement_x, + float measurement_y, + const float* mono_x, + const float* mono_y, + const float* mono_q, size_t num_monopoles, - const FishDipole* dipoles, + const float* dip_x, + const float* dip_y, + const float* dip_mx, + const float* dip_my, size_t num_dipoles, - float eps_m + float eps_m, + float* out_x, + float* out_y ) { - FishVec2 measurement_m = { - measurement_position_cm.x * CM_TO_M, - measurement_position_cm.y * CM_TO_M, - }; - FishVec2 field = {0.0f, 0.0f}; + float measurement_mx = measurement_x * CM_TO_M; + float measurement_my = measurement_y * CM_TO_M; + float field_x = 0.0f; + float field_y = 0.0f; for (size_t i = 0; i < num_monopoles; i++) { - FishVec2 source_m = { - monopoles[i].position_cm.x * CM_TO_M, - monopoles[i].position_cm.y * CM_TO_M, - }; - FishVec2 offset = { - measurement_m.x - source_m.x, - measurement_m.y - source_m.y, - }; - float distance = vec_length(offset) + eps_m; + float source_mx = mono_x[i] * CM_TO_M; + float source_my = mono_y[i] * CM_TO_M; + float ox = measurement_mx - source_mx; + float oy = measurement_my - source_my; + float distance = vec_length(ox, oy) + eps_m; float weight = - K_COULOMB * monopoles[i].charge_c / - (distance * distance * distance); - field.x += offset.x * weight; - field.y += offset.y * weight; + K_COULOMB * mono_q[i] / (distance * distance * distance); + field_x += ox * weight; + field_y += oy * weight; } for (size_t i = 0; i < num_dipoles; i++) { - FishVec2 source_m = { - dipoles[i].position_cm.x * CM_TO_M, - dipoles[i].position_cm.y * CM_TO_M, - }; - FishVec2 offset = { - measurement_m.x - source_m.x, - measurement_m.y - source_m.y, - }; - float distance = vec_length(offset) + eps_m; + float source_mx = dip_x[i] * CM_TO_M; + float source_my = dip_y[i] * CM_TO_M; + float ox = measurement_mx - source_mx; + float oy = measurement_my - source_my; + float distance = vec_length(ox, oy) + eps_m; float r2 = distance * distance; float r3 = r2 * distance; float r5 = r3 * r2; - float moment_dot_offset = - dipoles[i].moment_c_m.x * offset.x + - dipoles[i].moment_c_m.y * offset.y; + float moment_dot_offset = dip_mx[i] * ox + dip_my[i] * oy; float axial = 3.0f * moment_dot_offset / r5; - field.x += K_COULOMB * ( - offset.x * axial - dipoles[i].moment_c_m.x / r3 - ); - field.y += K_COULOMB * ( - offset.y * axial - dipoles[i].moment_c_m.y / r3 - ); + field_x += K_COULOMB * (ox * axial - dip_mx[i] / r3); + field_y += K_COULOMB * (oy * axial - dip_my[i] / r3); } - return field; + *out_x = field_x; + *out_y = field_y; } -FishVec2 induce_dipole_moment( - FishVec2 external_field_vm, +void induce_dipole_moment( + float external_field_x, + float external_field_y, float conductor_radius_cm, - float conductor_contrast + float conductor_contrast, + float* out_x, + float* out_y ) { float radius_m = conductor_radius_cm * CM_TO_M; float volume_m3 = (4.0f / 3.0f) * PI_F * radius_m * radius_m * radius_m; - float scale = - 3.0f * EPSILON_0 * volume_m3 * conductor_contrast; - return (FishVec2){ - external_field_vm.x * scale, - external_field_vm.y * scale, - }; + float scale = 3.0f * EPSILON_0 * volume_m3 * conductor_contrast; + *out_x = external_field_x * scale; + *out_y = external_field_y * scale; } /* Perpendicular distance from a point to a rectangular arena wall. */ static inline float distance_to_wall_cm( - FishVec2 position_cm, FishVec2 arena_size_cm, int wall + float pos_x, float pos_y, float arena_size_x, float arena_size_y, int wall ) { - if (wall == WALL_LEFT) return position_cm.x; - if (wall == WALL_RIGHT) return arena_size_cm.x - position_cm.x; - if (wall == WALL_BOTTOM) return position_cm.y; - if (wall == WALL_TOP) return arena_size_cm.y - position_cm.y; + if (wall == WALL_LEFT) return pos_x; + if (wall == WALL_RIGHT) return arena_size_x - pos_x; + if (wall == WALL_BOTTOM) return pos_y; + if (wall == WALL_TOP) return arena_size_y - pos_y; return 0.0f; } -/* - * Reflect a source across one arena wall (shared by monopoles and dipoles). - * position_cm is always updated. If moment_c_m is non-NULL (dipole), its normal - * component is flipped when requested and both components are scaled. If - * charge_c is non-NULL (monopole), charge is scaled (and optionally sign-flipped). - */ static inline void reflect_source_across_wall( - FishVec2* position_cm, - FishVec2* moment_c_m, + float* pos_x, + float* pos_y, + float* moment_x, + float* moment_y, float* charge_c, - FishVec2 arena_size_cm, + float arena_size_x, + float arena_size_y, int wall, float reflection_scale, bool flip_on_reflection ) { if (wall == WALL_LEFT) { - position_cm->x = -position_cm->x; - if (moment_c_m != NULL && flip_on_reflection) { - moment_c_m->x = -moment_c_m->x; + *pos_x = -(*pos_x); + if (moment_x != NULL && flip_on_reflection) { + *moment_x = -(*moment_x); } } else if (wall == WALL_RIGHT) { - position_cm->x = 2.0f * arena_size_cm.x - position_cm->x; - if (moment_c_m != NULL && flip_on_reflection) { - moment_c_m->x = -moment_c_m->x; + *pos_x = 2.0f * arena_size_x - (*pos_x); + if (moment_x != NULL && flip_on_reflection) { + *moment_x = -(*moment_x); } } else if (wall == WALL_BOTTOM) { - position_cm->y = -position_cm->y; - if (moment_c_m != NULL && flip_on_reflection) { - moment_c_m->y = -moment_c_m->y; + *pos_y = -(*pos_y); + if (moment_y != NULL && flip_on_reflection) { + *moment_y = -(*moment_y); } } else if (wall == WALL_TOP) { - position_cm->y = 2.0f * arena_size_cm.y - position_cm->y; - if (moment_c_m != NULL && flip_on_reflection) { - moment_c_m->y = -moment_c_m->y; + *pos_y = 2.0f * arena_size_y - (*pos_y); + if (moment_y != NULL && flip_on_reflection) { + *moment_y = -(*moment_y); } } if (charge_c != NULL) { *charge_c *= reflection_scale * (flip_on_reflection ? -1.0f : 1.0f); } - if (moment_c_m != NULL) { - moment_c_m->x *= reflection_scale; - moment_c_m->y *= reflection_scale; + if (moment_x != NULL && moment_y != NULL) { + *moment_x *= reflection_scale; + *moment_y *= reflection_scale; } } // Field from the original sources plus first-order wall images (near walls only). -FishVec2 measure_electric_field_with_reflections( - FishVec2 measurement_position_cm, - const FishMonopole* monopoles, +void measure_electric_field_with_reflections( + float measurement_x, + float measurement_y, + const float* mono_x, + const float* mono_y, + const float* mono_q, size_t num_monopoles, - const FishDipole* dipoles, + const float* dip_x, + const float* dip_y, + const float* dip_mx, + const float* dip_my, size_t num_dipoles, - FishVec2 arena_size_cm, + float arena_size_x, + float arena_size_y, float eps_m, float reflection_scale, - bool flip_on_reflection + bool flip_on_reflection, + float* out_x, + float* out_y ) { - FishVec2 field = measure_electric_field( - measurement_position_cm, - monopoles, num_monopoles, - dipoles, num_dipoles, - eps_m + measure_electric_field( + measurement_x, measurement_y, + mono_x, mono_y, mono_q, num_monopoles, + dip_x, dip_y, dip_mx, dip_my, num_dipoles, + eps_m, out_x, out_y ); - /* Collect wall indices within range once, then only loop those. */ int near_walls[NUM_WALLS]; int num_near_walls = 0; for (int wall = 0; wall < NUM_WALLS; wall++) { float dist = distance_to_wall_cm( - measurement_position_cm, arena_size_cm, wall + measurement_x, measurement_y, arena_size_x, arena_size_y, wall ); if (dist <= REFLECTION_WALL_RANGE_CM) { near_walls[num_near_walls++] = wall; } } if (num_near_walls == 0) { - return field; + return; } for (int w = 0; w < num_near_walls; w++) { int wall = near_walls[w]; for (size_t i = 0; i < num_monopoles; i++) { - FishMonopole image = monopoles[i]; + float ix = mono_x[i]; + float iy = mono_y[i]; + float iq = mono_q[i]; reflect_source_across_wall( - &image.position_cm, - NULL, - &image.charge_c, - arena_size_cm, - wall, - reflection_scale, - flip_on_reflection + &ix, &iy, NULL, NULL, &iq, + arena_size_x, arena_size_y, + wall, reflection_scale, flip_on_reflection ); - FishVec2 contribution = measure_electric_field( - measurement_position_cm, &image, 1, NULL, 0, eps_m + float cx, cy; + measure_electric_field( + measurement_x, measurement_y, + &ix, &iy, &iq, 1, + NULL, NULL, NULL, NULL, 0, + eps_m, &cx, &cy ); - field.x += contribution.x; - field.y += contribution.y; + *out_x += cx; + *out_y += cy; } for (size_t i = 0; i < num_dipoles; i++) { - FishDipole image = dipoles[i]; + float ix = dip_x[i]; + float iy = dip_y[i]; + float imx = dip_mx[i]; + float imy = dip_my[i]; reflect_source_across_wall( - &image.position_cm, - &image.moment_c_m, - NULL, - arena_size_cm, - wall, - reflection_scale, - flip_on_reflection + &ix, &iy, &imx, &imy, NULL, + arena_size_x, arena_size_y, + wall, reflection_scale, flip_on_reflection ); - FishVec2 contribution = measure_electric_field( - measurement_position_cm, NULL, 0, &image, 1, eps_m + float cx, cy; + measure_electric_field( + measurement_x, measurement_y, + NULL, NULL, NULL, 0, + &ix, &iy, &imx, &imy, 1, + eps_m, &cx, &cy ); - field.x += contribution.x; - field.y += contribution.y; + *out_x += cx; + *out_y += cy; } } - return field; } // Receptor geometry and transduction -float -project_field(FishVec2 field, FishVec2 sensor_normal) { - return (float)( - (float)field.x * (float)sensor_normal.x + - (float)field.y * (float)sensor_normal.y - ); -} - -FishSensor -radial_sensor(float angle, float body_radius_cm) { - FishVec2 normal = {cosf(angle), sinf(angle)}; - FishSensor sensor = { - .position_cm = { - normal.x * body_radius_cm, - normal.y * body_radius_cm, - }, - .normal = normal, - }; - return sensor; +float project_field( + float field_x, float field_y, float normal_x, float normal_y +) { + return field_x * normal_x + field_y * normal_y; } float @@ -643,7 +649,8 @@ typedef struct Log { } Log; typedef struct Trace { - FishVec2 positions[TRACE_LENGTH]; + float pos_x[TRACE_LENGTH]; + float pos_y[TRACE_LENGTH]; int index; int count; } Trace; @@ -657,24 +664,16 @@ typedef struct Client { Trace traces[MAX_AGENTS]; } Client; -typedef struct FishAgentState { - FishMovement movement; - float size; - int bite_cooldown; /* remaining steps; 0 = ready */ - int eat_cooldown; /* remaining steps; 0 = free to move / eat */ - bool emits_eod; - bool bite_action; - bool was_bitten; - bool ate_food; - float last_action[ACTION_SIZE]; - float ampullary_ema[NUM_AMPULLARY]; -} FishAgentState; - typedef struct FishFood { float pos_x; float pos_y; float orientation; bool active; + // Dipoles in world frame + float intrinsic_moment_x; + float intrinsic_moment_y; + float induced_moment_x; + float induced_moment_y; } FishFood; typedef enum FoodDistribution { @@ -694,16 +693,19 @@ typedef struct FishEnv { int episode_length; unsigned int rng; - FishVec2 arena_size_cm; - FishVec2 min_arena_size_cm; - FishVec2 max_arena_size_cm; + float arena_size_x; + float arena_size_y; + float min_arena_size_x; + float min_arena_size_y; + float max_arena_size_x; + float max_arena_size_y; float electric_field_radius_cm; FoodDistribution food_distribution; int configured_num_food; float patch_radius_cm; float patch_radius_std_cm; float patch_density; - FishAgentState agents[MAX_AGENTS]; + FishAgent agents[MAX_AGENTS]; FishFood food[MAX_FOOD]; int num_food; int food_eaten; @@ -711,11 +713,6 @@ typedef struct FishEnv { int collisions_fish; float episode_return; - FishMonopole eod_sources[2 * MAX_AGENTS]; - FishDipole intrinsic_sources[MAX_AGENTS + MAX_FOOD]; - FishDipole induced_sources[MAX_AGENTS + MAX_FOOD]; - int num_intrinsic_sources; - int num_induced_sources; float mormyromast_cd[NUM_MORMYROMASTS]; float amp_intrinsic_baseline[NUM_AMPULLARY]; Client* client; @@ -730,22 +727,116 @@ float random_multiplier(FishEnv* env, float fraction) { return (float)random_uniform(env, 1.0f - (float)fraction, 1.0f + (float)fraction); } +/* Pack EOD monopoles from all agents into SoA buffers. */ +static int pack_eod_sources( + const FishEnv* env, float* x, float* y, float* q +) { + int n = 0; + for (int i = 0; i < env->num_agents; i++) { + for (int p = 0; p < 2; p++) { + x[n] = env->agents[i].eod_pos_x[p]; + y[n] = env->agents[i].eod_pos_y[p]; + q[n] = env->agents[i].eod_charge[p]; + n++; + } + } + return n; +} + +/* Pack intrinsic dipoles: all agents, then active food. */ +static int pack_intrinsic_sources( + const FishEnv* env, float* x, float* y, float* mx, float* my +) { + int n = 0; + for (int i = 0; i < env->num_agents; i++) { + x[n] = env->agents[i].pos_x; + y[n] = env->agents[i].pos_y; + mx[n] = env->agents[i].intrinsic_moment_x; + my[n] = env->agents[i].intrinsic_moment_y; + n++; + } + for (int i = 0; i < env->num_food; i++) { + if (!env->food[i].active) continue; + x[n] = env->food[i].pos_x; + y[n] = env->food[i].pos_y; + mx[n] = env->food[i].intrinsic_moment_x; + my[n] = env->food[i].intrinsic_moment_y; + n++; + } + return n; +} + +/* Pack induced dipoles: all agents, then active food. */ +static int pack_induced_sources( + const FishEnv* env, float* x, float* y, float* mx, float* my +) { + int n = 0; + for (int i = 0; i < env->num_agents; i++) { + x[n] = env->agents[i].pos_x; + y[n] = env->agents[i].pos_y; + mx[n] = env->agents[i].induced_moment_x; + my[n] = env->agents[i].induced_moment_y; + n++; + } + for (int i = 0; i < env->num_food; i++) { + if (!env->food[i].active) continue; + x[n] = env->food[i].pos_x; + y[n] = env->food[i].pos_y; + mx[n] = env->food[i].induced_moment_x; + my[n] = env->food[i].induced_moment_y; + n++; + } + return n; +} + +void init_agent_sensors(FishAgent* agent) { + float r = agent->body_radius_cm; + for (int s = 0; s < NUM_MORMYROMASTS; s++) { + float a = mormyromast_angle((size_t)s, 10, 26, PI_F / 3.0f); + float nx = cosf(a); + float ny = sinf(a); + agent->morm_local_x[s] = nx * r; + agent->morm_local_y[s] = ny * r; + agent->morm_nx[s] = nx; + agent->morm_ny[s] = ny; + } + for (int s = 0; s < NUM_AMPULLARY; s++) { + float a = uniform_sensor_angle((size_t)s, NUM_AMPULLARY); + float nx = cosf(a); + float ny = sinf(a); + agent->amp_local_x[s] = nx * r; + agent->amp_local_y[s] = ny * r; + agent->amp_nx[s] = nx; + agent->amp_ny[s] = ny; + } + for (int s = 0; s < NUM_KNOLLEN; s++) { + float a = uniform_sensor_angle((size_t)s, NUM_KNOLLEN); + float nx = cosf(a); + float ny = sinf(a); + agent->knollen_local_x[s] = nx * r; + agent->knollen_local_y[s] = ny * r; + agent->knollen_nx[s] = nx; + agent->knollen_ny[s] = ny; + } +} + + void init(FishEnv* env) { if (env->num_agents <= 0) env->num_agents = 4; if (env->num_agents > MAX_AGENTS) env->num_agents = MAX_AGENTS; - if (env->arena_size_cm.x <= 0.0f) env->arena_size_cm.x = 70.0f; - if (env->arena_size_cm.y <= 0.0f) env->arena_size_cm.y = 70.0f; - if (env->min_arena_size_cm.x <= 0.0f) { - env->min_arena_size_cm.x = env->arena_size_cm.x; + if (env->arena_size_x <= 0.0f) env->arena_size_x = 70.0f; + if (env->arena_size_y <= 0.0f) env->arena_size_y = 70.0f; + if (env->min_arena_size_x <= 0.0f) { + env->min_arena_size_x = env->arena_size_x; } - if (env->min_arena_size_cm.y <= 0.0f) { - env->min_arena_size_cm.y = env->arena_size_cm.y; + if (env->min_arena_size_y <= 0.0f) { + env->min_arena_size_y = env->arena_size_y; } - if (env->max_arena_size_cm.x <= 0.0f) { - env->max_arena_size_cm.x = env->min_arena_size_cm.x; + if (env->max_arena_size_x <= 0.0f) { + env->max_arena_size_x = env->min_arena_size_x; } - if (env->max_arena_size_cm.y <= 0.0f) { - env->max_arena_size_cm.y = env->min_arena_size_cm.y; + if (env->max_arena_size_y <= 0.0f) { + env->max_arena_size_y = env->min_arena_size_y; } if (env->configured_num_food <= 0) env->configured_num_food = MAX_FOOD; if (env->configured_num_food > MAX_FOOD) { @@ -774,58 +865,65 @@ void c_allocate(FishEnv* env) { } void compute_observations(FishEnv* env) { + float dip_x[MAX_AGENTS + MAX_FOOD]; + float dip_y[MAX_AGENTS + MAX_FOOD]; + float dip_mx[MAX_AGENTS + MAX_FOOD]; + float dip_my[MAX_AGENTS + MAX_FOOD]; + for (int i = 0; i < env->num_agents; i++) { - FishAgentState* agent = &env->agents[i]; + FishAgent* agent = &env->agents[i]; float* obs = env->observations + i * OBS_SIZE; int cursor = 0; + int n_induced = pack_induced_sources(env, dip_x, dip_y, dip_mx, dip_my); /* Mormyromasts: active/collective image after direct-EOD subtraction. */ - for (int sensor_idx = 0; sensor_idx < NUM_MORMYROMASTS; - sensor_idx++) { - float angle = mormyromast_angle( - (size_t)sensor_idx, 10, 26, PI_F / 3.0f - ); - FishSensor sensor = transform_sensor( - radial_sensor(angle, agent->movement.body_radius_cm), - agent->movement.position_cm, - (float)agent->movement.orientation + for (int sensor_idx = 0; sensor_idx < NUM_MORMYROMASTS; sensor_idx++) { + float sx, sy, snx, sny; + world_sensor( + agent->morm_local_x[sensor_idx], agent->morm_local_y[sensor_idx], + agent->morm_nx[sensor_idx], agent->morm_ny[sensor_idx], + agent->pos_x, agent->pos_y, agent->orientation, + &sx, &sy, &snx, &sny ); - FishVec2 induced = measure_electric_field_with_reflections( - sensor.position_cm, NULL, 0, - env->induced_sources, (size_t)env->num_induced_sources, - env->arena_size_cm, FIELD_EPS_M, - REFLECTION_SCALE, false + float fx, fy; + measure_electric_field_with_reflections( + sx, sy, + NULL, NULL, NULL, 0, + dip_x, dip_y, dip_mx, dip_my, (size_t)n_induced, + env->arena_size_x, env->arena_size_y, FIELD_EPS_M, + REFLECTION_SCALE, false, &fx, &fy ); - float reading = project_field(induced, sensor.normal); + float reading = project_field(fx, fy, snx, sny); if (!agent->emits_eod) { reading *= 100.0f; } reading *= random_multiplier(env, 0.05f); - obs[cursor++] = (float)normalize_sensor_reading( + obs[cursor++] = normalize_sensor_reading( reading, MORMYROMAST_MIN_VM, MORMYROMAST_MAX_VM, SENSOR_EPS ); } + int n_intrinsic = pack_intrinsic_sources(env, dip_x, dip_y, dip_mx, dip_my); // Ampullary receptors: intrinsic sources with static self-field removed - for (int sensor_idx = 0; sensor_idx < NUM_AMPULLARY; - sensor_idx++) { - float angle = uniform_sensor_angle( - (size_t)sensor_idx, NUM_AMPULLARY + for (int sensor_idx = 0; sensor_idx < NUM_AMPULLARY; sensor_idx++) { + float sx, sy, snx, sny; + world_sensor( + agent->amp_local_x[sensor_idx], agent->amp_local_y[sensor_idx], + agent->amp_nx[sensor_idx], agent->amp_ny[sensor_idx], + agent->pos_x, agent->pos_y, agent->orientation, + &sx, &sy, &snx, &sny ); - FishSensor sensor = transform_sensor( - radial_sensor(angle, agent->movement.body_radius_cm), - agent->movement.position_cm, - (float)agent->movement.orientation - ); - FishVec2 field = measure_electric_field_with_reflections( - sensor.position_cm, NULL, 0, - env->intrinsic_sources, (size_t)env->num_intrinsic_sources, - env->arena_size_cm, FIELD_EPS_M, - REFLECTION_SCALE, false + float fx, fy; + measure_electric_field_with_reflections( + sx, sy, + NULL, NULL, NULL, 0, + dip_x, dip_y, dip_mx, dip_my, (size_t)n_intrinsic, + env->arena_size_x, env->arena_size_y, FIELD_EPS_M, + REFLECTION_SCALE, false, &fx, &fy ); float reading = - project_field(field, sensor.normal) - + project_field(fx, fy, snx, sny) - env->amp_intrinsic_baseline[sensor_idx]; bool cons_eod = false; for (int other = 0; other < env->num_agents; other++) { @@ -835,11 +933,10 @@ void compute_observations(FishEnv* env) { } } reading *= random_multiplier(env, cons_eod ? 0.5f : 0.05f); - float processed = normalize_sensor_reading( + obs[cursor++] = normalize_sensor_reading( reading, AMPULLARY_MIN_VM, AMPULLARY_MAX_VM, SENSOR_EPS ); - obs[cursor++] = (float)processed; } /* Knollenorgans: one directional 12-receptor block per conspecific. */ @@ -850,33 +947,35 @@ void compute_observations(FishEnv* env) { for (int other = 0; other < MAX_AGENTS; other++) { if (other == i) continue; bool valid = other < env->num_agents && env->agents[other].emits_eod; - for (int sensor_idx = 0; sensor_idx < NUM_KNOLLEN; - sensor_idx++) { + for (int sensor_idx = 0; sensor_idx < NUM_KNOLLEN; sensor_idx++) { float value = 0.0f; if (valid) { - float angle = uniform_sensor_angle( - (size_t)sensor_idx, NUM_KNOLLEN + float sx, sy, snx, sny; + world_sensor( + agent->knollen_local_x[sensor_idx], + agent->knollen_local_y[sensor_idx], + agent->knollen_nx[sensor_idx], + agent->knollen_ny[sensor_idx], + agent->pos_x, agent->pos_y, agent->orientation, + &sx, &sy, &snx, &sny ); - FishSensor sensor = transform_sensor( - radial_sensor( - angle, agent->movement.body_radius_cm - ), - agent->movement.position_cm, - (float)agent->movement.orientation + float fx, fy; + measure_electric_field( + sx, sy, + env->agents[other].eod_pos_x, + env->agents[other].eod_pos_y, + env->agents[other].eod_charge, + 2, + NULL, NULL, NULL, NULL, 0, + FIELD_EPS_M, &fx, &fy ); - FishVec2 field = measure_electric_field( - sensor.position_cm, - &env->eod_sources[2 * other], 2, - NULL, 0, FIELD_EPS_M - ); - float raw_knollen = - project_field(field, sensor.normal); + float raw_knollen = project_field(fx, fy, snx, sny); raw_knollen *= random_multiplier(env, 0.05f); value = fabsf(raw_knollen) <= KNOLLEN_MIN_VM ? 0.0f : (raw_knollen < 0.0f ? -1.0f : 1.0f); } - obs[cursor++] = (float)value; + obs[cursor++] = value; } bool detected = false; int block_start = cursor - NUM_KNOLLEN; @@ -892,7 +991,7 @@ void compute_observations(FishEnv* env) { metadata += random_uniform(env, -0.05f, 0.05f); metadata = clamp(metadata, -1.0f, 1.0f); } - obs[metadata_start + cons_slot] = (float)metadata; + obs[metadata_start + cons_slot] = metadata; cons_slot++; } while (cons_slot < MAX_AGENTS - 1) { @@ -906,31 +1005,26 @@ void compute_observations(FishEnv* env) { } obs[cursor++] = 0.0f; /* fatigue, retained for upstream layout */ obs[cursor++] = agent->was_bitten ? 1.0f : 0.0f; - obs[cursor++] = (float)agent->size; + obs[cursor++] = agent->size; obs[cursor++] = (float)agent->bite_cooldown / (float)BITE_COOLDOWN_STEPS; - obs[cursor++] = (float)clamp( - agent->movement.displacement_ego_cm.x / - (float)agent->movement.max_linear_velocity, -1.0f, 1.0f); - obs[cursor++] = (float)clamp( - agent->movement.displacement_ego_cm.y / - (float)agent->movement.max_linear_velocity, -1.0f, 1.0f); + obs[cursor++] = clamp( + agent->disp_ego_x / agent->max_linear_velocity, -1.0f, 1.0f); + obs[cursor++] = clamp( + agent->disp_ego_y / agent->max_linear_velocity, -1.0f, 1.0f); obs[cursor++] = (float)agent->eat_cooldown / (float)EAT_COOLDOWN_STEPS; } } -bool -position_overlaps_agents( - const FishEnv* env, FishVec2 position, int count, float radius +bool position_overlaps_agents( + const FishEnv* env, float pos_x, float pos_y, int count, float radius ) { for (int i = 0; i < count; i++) { - FishVec2 delta = { - position.x - env->agents[i].movement.position_cm.x, - position.y - env->agents[i].movement.position_cm.y, - }; - float minimum = radius + env->agents[i].movement.body_radius_cm; - if (vec_length_squared(delta) < minimum * minimum) return true; + float dx = pos_x - env->agents[i].pos_x; + float dy = pos_y - env->agents[i].pos_y; + float minimum = radius + env->agents[i].body_radius_cm; + if (vec_length_squared(dx, dy) < minimum * minimum) return true; } return false; } @@ -940,145 +1034,141 @@ position_overlaps_agents( * once for a representative fish at the arena center, orientation zero. */ void calibrate_electroreceptors(FishEnv* env) { - FishVec2 center = { - env->arena_size_cm.x * 0.5f, - env->arena_size_cm.y * 0.5f, - }; - FishMonopole eod[2] = { - { - .position_cm = { - center.x + EOD_POLE_OFFSET_CM, center.y - }, - .charge_c = EOD_CHARGE_C, - }, - { - .position_cm = { - center.x - EOD_POLE_OFFSET_CM, center.y - }, - .charge_c = -EOD_CHARGE_C, - }, - }; - FishDipole intrinsic = { - .position_cm = center, - .moment_c_m = {INTRINSIC_MOMENT_C_M, 0.0f}, + float center_x = env->arena_size_x * 0.5f; + float center_y = env->arena_size_y * 0.5f; + float eod_x[2] = { + center_x + EOD_POLE_OFFSET_CM, + center_x - EOD_POLE_OFFSET_CM, }; + float eod_y[2] = {center_y, center_y}; + float eod_q[2] = {EOD_CHARGE_C, -EOD_CHARGE_C}; + float dip_x[1] = {center_x}; + float dip_y[1] = {center_y}; + float dip_mx[1] = {INTRINSIC_MOMENT_C_M}; + float dip_my[1] = {0.0f}; for (int i = 0; i < NUM_MORMYROMASTS; i++) { - float angle = mormyromast_angle( - (size_t)i, 10, 26, PI_F / 3.0f - ); - FishSensor sensor = radial_sensor(angle, BODY_RADIUS_CM); - sensor.position_cm.x += center.x; - sensor.position_cm.y += center.y; - FishVec2 field = measure_electric_field_with_reflections( - sensor.position_cm, eod, 2, NULL, 0, - env->arena_size_cm, FIELD_EPS_M, - REFLECTION_SCALE, false + float a = mormyromast_angle((size_t)i, 10, 26, PI_F / 3.0f); + float nx = cosf(a); + float ny = sinf(a); + float sx = center_x + nx * BODY_RADIUS_CM; + float sy = center_y + ny * BODY_RADIUS_CM; + float fx, fy; + measure_electric_field_with_reflections( + sx, sy, + eod_x, eod_y, eod_q, 2, + NULL, NULL, NULL, NULL, 0, + env->arena_size_x, env->arena_size_y, FIELD_EPS_M, + REFLECTION_SCALE, false, &fx, &fy ); - env->mormyromast_cd[i] = project_field(field, sensor.normal); + env->mormyromast_cd[i] = project_field(fx, fy, nx, ny); } for (int i = 0; i < NUM_AMPULLARY; i++) { - float angle = uniform_sensor_angle( - (size_t)i, NUM_AMPULLARY + float a = uniform_sensor_angle((size_t)i, NUM_AMPULLARY); + float nx = cosf(a); + float ny = sinf(a); + float sx = center_x + nx * BODY_RADIUS_CM; + float sy = center_y + ny * BODY_RADIUS_CM; + float fx, fy; + measure_electric_field_with_reflections( + sx, sy, + NULL, NULL, NULL, 0, + dip_x, dip_y, dip_mx, dip_my, 1, + env->arena_size_x, env->arena_size_y, FIELD_EPS_M, + REFLECTION_SCALE, false, &fx, &fy ); - FishSensor sensor = radial_sensor(angle, BODY_RADIUS_CM); - sensor.position_cm.x += center.x; - sensor.position_cm.y += center.y; - FishVec2 field = measure_electric_field_with_reflections( - sensor.position_cm, NULL, 0, &intrinsic, 1, - env->arena_size_cm, FIELD_EPS_M, - REFLECTION_SCALE, false - ); - env->amp_intrinsic_baseline[i] = - project_field(field, sensor.normal); + env->amp_intrinsic_baseline[i] = project_field(fx, fy, nx, ny); } } void build_electric_scene(FishEnv* env) { - env->num_intrinsic_sources = 0; - env->num_induced_sources = 0; + float eod_x[2 * MAX_AGENTS]; + float eod_y[2 * MAX_AGENTS]; + float eod_q[2 * MAX_AGENTS]; + for (int i = 0; i < env->num_agents; i++) { - FishAgentState* agent = &env->agents[i]; - FishMonopole positive = { - .position_cm = {EOD_POLE_OFFSET_CM, 0.0f}, - .charge_c = EOD_CHARGE_C, - }; - FishMonopole negative = { - .position_cm = {-EOD_POLE_OFFSET_CM, 0.0f}, - .charge_c = -EOD_CHARGE_C, - }; - float agent_ori = (float)agent->movement.orientation; - env->eod_sources[2 * i] = transform_monopole( - positive, agent->movement.position_cm, agent_ori, - agent->emits_eod + FishAgent* agent = &env->agents[i]; + float ori = agent->orientation; + float charge_scale = agent->emits_eod ? 1.0f : 0.0f; + transform_position( + EOD_POLE_OFFSET_CM, 0.0f, + agent->pos_x, agent->pos_y, ori, + &agent->eod_pos_x[0], &agent->eod_pos_y[0] ); - env->eod_sources[2 * i + 1] = transform_monopole( - negative, agent->movement.position_cm, agent_ori, - agent->emits_eod + transform_position( + -EOD_POLE_OFFSET_CM, 0.0f, + agent->pos_x, agent->pos_y, ori, + &agent->eod_pos_x[1], &agent->eod_pos_y[1] + ); + agent->eod_charge[0] = EOD_CHARGE_C * charge_scale; + agent->eod_charge[1] = -EOD_CHARGE_C * charge_scale; + rotate( + INTRINSIC_MOMENT_C_M, 0.0f, ori, + &agent->intrinsic_moment_x, &agent->intrinsic_moment_y ); - env->intrinsic_sources[env->num_intrinsic_sources++] = (FishDipole){ - .position_cm = agent->movement.position_cm, - .moment_c_m = rotate( - (FishVec2){INTRINSIC_MOMENT_C_M, 0.0f}, - agent_ori - ), - }; } for (int i = 0; i < env->num_food; i++) { - if (!env->food[i].active) continue; - FishDipole intrinsic = { - .position_cm = {env->food[i].pos_x, env->food[i].pos_y}, - .moment_c_m = rotate( - (FishVec2){0.0f, FOOD_INTRINSIC_MOMENT_C_M}, - env->food[i].orientation - ), - }; - env->intrinsic_sources[env->num_intrinsic_sources++] = intrinsic; + if (!env->food[i].active) { + env->food[i].intrinsic_moment_x = 0.0f; + env->food[i].intrinsic_moment_y = 0.0f; + continue; + } + rotate( + 0.0f, FOOD_INTRINSIC_MOMENT_C_M, env->food[i].orientation, + &env->food[i].intrinsic_moment_x, &env->food[i].intrinsic_moment_y + ); } + int n_eod = pack_eod_sources(env, eod_x, eod_y, eod_q); + // EOD fields induce dipoles on prey and agent bodies (Chen et al., Eq. 6) for (int i = 0; i < env->num_agents; i++) { - FishVec2 position = env->agents[i].movement.position_cm; - FishVec2 moment = {0.0f, 0.0f}; - if (!env->agents[i].emits_eod) { - FishVec2 field = measure_electric_field( - position, env->eod_sources, (size_t)(2 * env->num_agents), - NULL, 0, FIELD_EPS_M + FishAgent* agent = &env->agents[i]; + float moment_x = 0.0f; + float moment_y = 0.0f; + if (!agent->emits_eod) { + float fx, fy; + measure_electric_field( + agent->pos_x, agent->pos_y, + eod_x, eod_y, eod_q, (size_t)n_eod, + NULL, NULL, NULL, NULL, 0, + FIELD_EPS_M, &fx, &fy ); - moment = induce_dipole_moment( - field, env->agents[i].movement.body_radius_cm, - CONDUCTOR_CONTRAST + induce_dipole_moment( + fx, fy, agent->body_radius_cm, + CONDUCTOR_CONTRAST, &moment_x, &moment_y ); } - float moment_magnitude = vec_length(moment); - float max_moment = - EOD_CHARGE_C * env->agents[i].movement.body_radius_cm; + float moment_magnitude = vec_length(moment_x, moment_y); + float max_moment = EOD_CHARGE_C * agent->body_radius_cm; if (EOD_CHARGE_C >= 0.0f && moment_magnitude > max_moment) { float moment_scale = max_moment / moment_magnitude; - moment = (FishVec2){ - moment.x * moment_scale, - moment.y * moment_scale, - }; + moment_x *= moment_scale; + moment_y *= moment_scale; } - env->induced_sources[env->num_induced_sources++] = (FishDipole){ - .position_cm = position, .moment_c_m = moment - }; + agent->induced_moment_x = moment_x; + agent->induced_moment_y = moment_y; } for (int i = 0; i < env->num_food; i++) { - if (!env->food[i].active) continue; - FishVec2 position = {env->food[i].pos_x, env->food[i].pos_y}; - FishVec2 field = measure_electric_field( - position, env->eod_sources, (size_t)(2 * env->num_agents), - NULL, 0, FIELD_EPS_M + if (!env->food[i].active) { + env->food[i].induced_moment_x = 0.0f; + env->food[i].induced_moment_y = 0.0f; + continue; + } + float fx, fy, mx, my; + measure_electric_field( + env->food[i].pos_x, env->food[i].pos_y, + eod_x, eod_y, eod_q, (size_t)n_eod, + NULL, NULL, NULL, NULL, 0, + FIELD_EPS_M, &fx, &fy ); - env->induced_sources[env->num_induced_sources++] = (FishDipole){ - .position_cm = position, - .moment_c_m = induce_dipole_moment( - field, FOOD_RADIUS_CM, CONDUCTOR_CONTRAST - ), - }; + induce_dipole_moment( + fx, fy, FOOD_RADIUS_CM, CONDUCTOR_CONTRAST, &mx, &my + ); + env->food[i].induced_moment_x = mx; + env->food[i].induced_moment_y = my; } } @@ -1086,10 +1176,12 @@ void c_reset(FishEnv* env) { init(env); // Sample arena size - env->arena_size_cm = (FishVec2){ - random_uniform(env, env->min_arena_size_cm.x, env->max_arena_size_cm.x), - random_uniform(env, env->min_arena_size_cm.y, env->max_arena_size_cm.y), - }; + env->arena_size_x = random_uniform( + env, env->min_arena_size_x, env->max_arena_size_x + ); + env->arena_size_y = random_uniform( + env, env->min_arena_size_y, env->max_arena_size_y + ); // FOOD_RANDOM picks uniform or patchy for this episode only FoodDistribution mode = env->food_distribution; @@ -1104,43 +1196,41 @@ void c_reset(FishEnv* env) { // Initialize agents with random positions and orientations, avoiding overlaps for (int i = 0; i < env->num_agents; i++) { - FishAgentState agent = {0}; + FishAgent agent = {0}; agent.size = random_uniform(env, 0.0f, 1.0f); - FishVec2 position; + float pos_x, pos_y; int attempts = 0; do { - position = (FishVec2){ - (float)random_uniform(env, 3.0f, (float)env->arena_size_cm.x - 3.0f), - (float)random_uniform(env, 3.0f, (float)env->arena_size_cm.y - 3.0f) - }; + pos_x = random_uniform(env, 3.0f, env->arena_size_x - 3.0f); + pos_y = random_uniform(env, 3.0f, env->arena_size_y - 3.0f); } while ( position_overlaps_agents( - env, position, i, BODY_RADIUS_CM + env, pos_x, pos_y, i, BODY_RADIUS_CM ) && ++attempts < 1000 ); - agent.movement = (FishMovement){ - .position_cm = position, - .orientation = random_uniform(env, -PI_F, PI_F), - .max_linear_velocity = 35.0f / (float)SIMULATION_HZ, - .max_angular_velocity = 3.6f / (float)SIMULATION_HZ, - .body_radius_cm = BODY_RADIUS_CM, - .min_linear_velocity = -5.0f / SIMULATION_HZ, - .max_linear_acceleration = 650.0f / (SIMULATION_HZ * SIMULATION_HZ), - .min_angular_velocity = -3.5f / SIMULATION_HZ, - .max_angular_acceleration = 318.0f / (SIMULATION_HZ * SIMULATION_HZ), - .linear_drag_factor = 0.95f, - .angular_drag_factor = 0.95f, - .motion_order = MOTION_FIRST_ORDER, - .backwards = false, - }; + agent.pos_x = pos_x; + agent.pos_y = pos_y; + agent.orientation = random_uniform(env, -PI_F, PI_F); + agent.max_linear_velocity = 35.0f / SIMULATION_HZ; + agent.max_angular_velocity = 3.6f / SIMULATION_HZ; + agent.body_radius_cm = BODY_RADIUS_CM; + agent.min_linear_velocity = -5.0f / SIMULATION_HZ; + agent.max_linear_acceleration = 650.0f / (SIMULATION_HZ * SIMULATION_HZ); + agent.min_angular_velocity = -3.5f / SIMULATION_HZ; + agent.max_angular_acceleration = 318.0f / (SIMULATION_HZ * SIMULATION_HZ); + agent.linear_drag_factor = 0.95f; + agent.angular_drag_factor = 0.95f; + agent.motion_order = MOTION_FIRST_ORDER; + agent.backwards = false; float size_multiplier = 1.0f + agent.size; - agent.movement.min_linear_velocity *= (float)size_multiplier; - agent.movement.max_linear_velocity *= size_multiplier; - agent.movement.max_linear_acceleration *= (float)size_multiplier; - agent.movement.min_angular_velocity *= (float)size_multiplier; - agent.movement.max_angular_velocity *= size_multiplier; - agent.movement.max_angular_acceleration *= (float)size_multiplier; + agent.min_linear_velocity *= size_multiplier; + agent.max_linear_velocity *= size_multiplier; + agent.max_linear_acceleration *= size_multiplier; + agent.min_angular_velocity *= size_multiplier; + agent.max_angular_velocity *= size_multiplier; + agent.max_angular_acceleration *= size_multiplier; agent.emits_eod = true; + init_agent_sensors(&agent); env->agents[i] = agent; env->rewards[i] = 0.0f; env->terminals[i] = 0.0f; @@ -1150,28 +1240,27 @@ void c_reset(FishEnv* env) { if (mode == FOOD_UNIFORM) { for (int i = 0; i < env->num_food; i++) { env->food[i] = (FishFood){ - .pos_x = random_uniform(env, 0.0f, env->arena_size_cm.x), - .pos_y = random_uniform(env, 0.0f, env->arena_size_cm.y), + .pos_x = random_uniform(env, 0.0f, env->arena_size_x), + .pos_y = random_uniform(env, 0.0f, env->arena_size_y), .orientation = random_uniform(env, 0.0f, 2.0f * PI_F), .active = true, }; } } else { // Patchy: random circular patches, food sampled uniformly in a patch disk - FishVec2 centers[MAX_PATCHES]; + float centers_x[MAX_PATCHES]; + float centers_y[MAX_PATCHES]; float radii[MAX_PATCHES]; float max_radius = - fminf(env->arena_size_cm.x, env->arena_size_cm.y) * 0.5f; + fminf(env->arena_size_x, env->arena_size_y) * 0.5f; int num_patches = (int)clamp( ceilf(env->patch_density * - env->arena_size_cm.x * env->arena_size_cm.y), + env->arena_size_x * env->arena_size_y), 1, MAX_PATCHES ); for (int p = 0; p < num_patches; p++) { - centers[p] = (FishVec2){ - random_uniform(env, 0.0f, env->arena_size_cm.x), - random_uniform(env, 0.0f, env->arena_size_cm.y), - }; + centers_x[p] = random_uniform(env, 0.0f, env->arena_size_x); + centers_y[p] = random_uniform(env, 0.0f, env->arena_size_y); radii[p] = clamp( env->patch_radius_cm + random_uniform( env, -env->patch_radius_std_cm, env->patch_radius_std_cm @@ -1184,10 +1273,10 @@ void c_reset(FishEnv* env) { float angle = random_uniform(env, 0.0f, 2.0f * PI_F); float r = radii[p] * sqrtf(random_uniform(env, 0.0f, 1.0f)); env->food[i] = (FishFood){ - .pos_x = clamp(centers[p].x + r * cosf(angle), - 0.0f, env->arena_size_cm.x), - .pos_y = clamp(centers[p].y + r * sinf(angle), - 0.0f, env->arena_size_cm.y), + .pos_x = clamp(centers_x[p] + r * cosf(angle), + 0.0f, env->arena_size_x), + .pos_y = clamp(centers_y[p] + r * sinf(angle), + 0.0f, env->arena_size_y), .orientation = random_uniform(env, 0.0f, 2.0f * PI_F), .active = true, }; @@ -1210,22 +1299,18 @@ void add_log(FishEnv* env) { } bool try_eat(FishEnv* env, int agent_idx) { - FishAgentState* agent = &env->agents[agent_idx]; + FishAgent* agent = &env->agents[agent_idx]; int nearest = -1; float nearest_distance = INFINITY; for (int i = 0; i < env->num_food; i++) { if (!env->food[i].active) continue; - FishVec2 food_pos = {env->food[i].pos_x, env->food[i].pos_y}; if (!point_in_forward_cone( - agent->movement.position_cm, - (float)agent->movement.orientation, - food_pos, + agent->pos_x, agent->pos_y, agent->orientation, + env->food[i].pos_x, env->food[i].pos_y, EATING_RADIUS_CM, EATING_ANGLE)) continue; - FishVec2 offset = { - food_pos.x - agent->movement.position_cm.x, - food_pos.y - agent->movement.position_cm.y, - }; - float distance = vec_length_squared(offset); + float dx = env->food[i].pos_x - agent->pos_x; + float dy = env->food[i].pos_y - agent->pos_y; + float distance = vec_length_squared(dx, dy); if (distance < nearest_distance) { nearest = i; nearest_distance = distance; @@ -1251,16 +1336,15 @@ void c_step(FishEnv* env) { env->terminals[i] = 0.0f; } for (int i = 0; i < env->num_agents; i++) { - FishAgentState* agent = &env->agents[i]; + FishAgent* agent = &env->agents[i]; float* raw_action = env->actions + i * ACTION_SIZE; float move = 1.0f / (1.0f + expf(-(float)raw_action[0])); float turn = tanhf((float)raw_action[1]); agent->emits_eod = raw_action[2] > 0.0f; - agent->bite_action = - raw_action[3] > 0.0f && agent->bite_cooldown <= 0; + agent->bite_action = raw_action[3] > 0.0f && agent->bite_cooldown <= 0; if (agent->bite_action) agent->bite_cooldown = BITE_COOLDOWN_STEPS; - agent->last_action[0] = (float)move; - agent->last_action[1] = (float)turn; + agent->last_action[0] = move; + agent->last_action[1] = turn; agent->last_action[2] = agent->emits_eod ? 1.0f : 0.0f; agent->last_action[3] = agent->bite_action ? 1.0f : 0.0f; env->eod_agent_steps += agent->emits_eod ? 1 : 0; @@ -1271,18 +1355,15 @@ void c_step(FishEnv* env) { } } FishMotionProposal proposal = propose_motion( - &agent->movement, move, turn, agent->eat_cooldown > 0 + agent, move, turn, agent->eat_cooldown > 0 ); - FishMovement movement_views[MAX_AGENTS]; - for (int j = 0; j < env->num_agents; j++) { - movement_views[j] = env->agents[j].movement; - } bool collided = motion_collides( - proposal.position_cm, agent->movement.body_radius_cm, - movement_views, (size_t)env->num_agents, (size_t)i + proposal.pos_x, proposal.pos_y, agent->body_radius_cm, + env->agents, (size_t)env->num_agents, (size_t)i ); bool hit_wall = commit_motion( - &agent->movement, proposal, collided, env->arena_size_cm + agent, proposal, collided, + env->arena_size_x, env->arena_size_y ); env->collisions_fish += collided ? 1 : 0; if (collided || hit_wall) { @@ -1292,24 +1373,19 @@ void c_step(FishEnv* env) { /* Bite resolution occurs after all fish have moved. */ for (int i = 0; i < env->num_agents; i++) { - FishAgentState* attacker = &env->agents[i]; + FishAgent* attacker = &env->agents[i]; if (!attacker->bite_action) continue; int victim = -1; float nearest = INFINITY; for (int j = 0; j < env->num_agents; j++) { if (i == j) continue; if (!point_in_forward_cone( - attacker->movement.position_cm, - (float)attacker->movement.orientation, - env->agents[j].movement.position_cm, + attacker->pos_x, attacker->pos_y, attacker->orientation, + env->agents[j].pos_x, env->agents[j].pos_y, BITING_RADIUS_CM, EATING_ANGLE)) continue; - FishVec2 offset = { - env->agents[j].movement.position_cm.x - - attacker->movement.position_cm.x, - env->agents[j].movement.position_cm.y - - attacker->movement.position_cm.y, - }; - float distance = vec_length_squared(offset); + float dx = env->agents[j].pos_x - attacker->pos_x; + float dy = env->agents[j].pos_y - attacker->pos_y; + float distance = vec_length_squared(dx, dy); if (distance < nearest) { victim = j; nearest = distance; @@ -1318,12 +1394,12 @@ void c_step(FishEnv* env) { if (victim >= 0) { env->agents[victim].was_bitten = true; float size_difference = attacker->size - env->agents[victim].size; - env->rewards[victim] += BITTEN_REWARD * (float)(1.0f + fmaxf(0.0f, size_difference)); + env->rewards[victim] += BITTEN_REWARD * (1.0f + fmaxf(0.0f, size_difference)); } } for (int i = 0; i < env->num_agents; i++) { - FishAgentState* agent = &env->agents[i]; + FishAgent* agent = &env->agents[i]; if (agent->eat_cooldown > 0) agent->eat_cooldown -= 1; if (agent->bite_cooldown > 0) agent->bite_cooldown -= 1; env->episode_return += env->rewards[i]; @@ -1338,26 +1414,24 @@ void c_step(FishEnv* env) { } } -Vector2 world_to_screen(const FishEnv* env, FishVec2 point_cm) { +Vector2 world_to_screen(const FishEnv* env, float point_x, float point_y) { Client* client = env->client; float usable_width = client->window_width - 2.0f * client->margin; float usable_height = client->window_height - 2.0f * client->margin; - Vector2 result = { - (float)(client->margin + - point_cm.x / env->arena_size_cm.x * usable_width), - (float)(client->window_height - client->margin - - point_cm.y / env->arena_size_cm.y * usable_height), + return (Vector2){ + client->margin + point_x / env->arena_size_x * usable_width, + client->window_height - client->margin - + point_y / env->arena_size_y * usable_height, }; - return result; } float render_scale(const FishEnv* env) { Client* client = env->client; float sx = (client->window_width - 2.0f * client->margin) / - env->arena_size_cm.x; + env->arena_size_x; float sy = (client->window_height - 2.0f * client->margin) / - env->arena_size_cm.y; - return (float)fminf(sx, sy); + env->arena_size_y; + return fminf(sx, sy); } Client* make_client(void) { @@ -1378,25 +1452,33 @@ Color field_color(float log_strength) { return (Color){shade, shade, shade, 190}; } -void render_field( - FishEnv* env, - const FishMonopole* monopoles, - const FishDipole* dipoles -) { +void render_field(FishEnv* env) { + float mono_x[2 * MAX_AGENTS]; + float mono_y[2 * MAX_AGENTS]; + float mono_q[2 * MAX_AGENTS]; + float dip_x[MAX_DIPOLE_SOURCES]; + float dip_y[MAX_DIPOLE_SOURCES]; + float dip_mx[MAX_DIPOLE_SOURCES]; + float dip_my[MAX_DIPOLE_SOURCES]; + int n_mono = pack_eod_sources(env, mono_x, mono_y, mono_q); + int n_intr = pack_intrinsic_sources(env, dip_x, dip_y, dip_mx, dip_my); + int n_ind = pack_induced_sources( + env, dip_x + n_intr, dip_y + n_intr, dip_mx + n_intr, dip_my + n_intr + ); + int n_dip = n_intr + n_ind; + const int columns = 25; const int rows = 25; for (int row = 0; row < rows; row++) { for (int column = 0; column < columns; column++) { - FishVec2 position = { - env->arena_size_cm.x * (column + 0.5f) / columns, - env->arena_size_cm.y * (row + 0.5f) / rows - }; + float pos_x = env->arena_size_x * (column + 0.5f) / columns; + float pos_y = env->arena_size_y * (row + 0.5f) / rows; bool near_fish = false; float radius_squared = env->electric_field_radius_cm * env->electric_field_radius_cm; for (int i = 0; i < env->num_agents; i++) { - float dx = position.x - env->agents[i].movement.position_cm.x; - float dy = position.y - env->agents[i].movement.position_cm.y; + float dx = pos_x - env->agents[i].pos_x; + float dy = pos_y - env->agents[i].pos_y; if (dx * dx + dy * dy <= radius_squared) { near_fish = true; break; @@ -1404,30 +1486,28 @@ void render_field( } if (!near_fish) continue; - FishVec2 field = measure_electric_field_with_reflections( - position, - monopoles, (size_t)(2 * env->num_agents), - dipoles, (size_t)( - env->num_intrinsic_sources + env->num_induced_sources - ), - env->arena_size_cm, + float fx, fy; + measure_electric_field_with_reflections( + pos_x, pos_y, + mono_x, mono_y, mono_q, (size_t)n_mono, + dip_x, dip_y, dip_mx, dip_my, (size_t)n_dip, + env->arena_size_x, env->arena_size_y, FIELD_EPS_M, REFLECTION_SCALE, - false + false, + &fx, &fy ); - float strength = vec_length(field); + float strength = vec_length(fx, fy); if (strength <= 0.0f) continue; float log_strength = log10f(strength); float arrow_length = 4.0f + 10.0f * clamp((log_strength + 8.0f) / 7.0f, 0.0f, 1.0f); - FishVec2 direction = { - field.x / strength, - field.y / strength, - }; - Vector2 start = world_to_screen(env, position); + float dir_x = fx / strength; + float dir_y = fy / strength; + Vector2 start = world_to_screen(env, pos_x, pos_y); Vector2 end = { - start.x + (float)(direction.x * arrow_length), - start.y - (float)(direction.y * arrow_length), + start.x + dir_x * arrow_length, + start.y - dir_y * arrow_length, }; Color color = field_color(log_strength); DrawCircleV(start, 2.0f, color); @@ -1446,25 +1526,14 @@ void c_render(FishEnv* env) { env->client->show_sensors = !env->client->show_sensors; } - FishMonopole monopoles[2 * MAX_AGENTS]; - FishDipole dipoles[MAX_DIPOLE_SOURCES]; - for (int i = 0; i < 2 * env->num_agents; i++) { - monopoles[i] = env->eod_sources[i]; - } - for (int i = 0; i < env->num_intrinsic_sources; i++) { - dipoles[i] = env->intrinsic_sources[i]; - } - for (int i = 0; i < env->num_induced_sources; i++) { - dipoles[env->num_intrinsic_sources + i] = env->induced_sources[i]; - } for (int i = 0; i < env->num_agents; i++) { Trace* trace = &env->client->traces[i]; if (env->terminals[i]) { trace->index = 0; trace->count = 0; } - trace->positions[trace->index] = - env->agents[i].movement.position_cm; + trace->pos_x[trace->index] = env->agents[i].pos_x; + trace->pos_y[trace->index] = env->agents[i].pos_y; trace->index = (trace->index + 1) % TRACE_LENGTH; if (trace->count < TRACE_LENGTH) trace->count++; } @@ -1472,12 +1541,8 @@ void c_render(FishEnv* env) { BeginDrawing(); ClearBackground(WHITE); - Vector2 arena_min = world_to_screen( - env, (FishVec2){0.0f, env->arena_size_cm.y} - ); - Vector2 arena_max = world_to_screen( - env, (FishVec2){env->arena_size_cm.x, 0.0f} - ); + Vector2 arena_min = world_to_screen(env, 0.0f, env->arena_size_y); + Vector2 arena_max = world_to_screen(env, env->arena_size_x, 0.0f); DrawRectangleRec( (Rectangle){ arena_min.x, arena_min.y, @@ -1487,7 +1552,7 @@ void c_render(FishEnv* env) { ); if (env->client->show_field) { - render_field(env, monopoles, dipoles); + render_field(env); } const Color color = {157, 122, 216, 255}; @@ -1501,8 +1566,8 @@ void c_render(FishEnv* env) { float alpha = 0.55f * (float)(trace->count - j) / (float)trace->count; DrawLineEx( - world_to_screen(env, trace->positions[current]), - world_to_screen(env, trace->positions[previous]), + world_to_screen(env, trace->pos_x[current], trace->pos_y[current]), + world_to_screen(env, trace->pos_x[previous], trace->pos_y[previous]), 2.0f, ColorAlpha(color, alpha) ); } @@ -1512,9 +1577,9 @@ void c_render(FishEnv* env) { for (int i = 0; i < env->num_food; i++) { if (!env->food[i].active) continue; Vector2 position = world_to_screen( - env, (FishVec2){env->food[i].pos_x, env->food[i].pos_y} + env, env->food[i].pos_x, env->food[i].pos_y ); - float radius = fmaxf(2.5f, (float)(FOOD_RADIUS_CM * scale)); + float radius = fmaxf(2.5f, FOOD_RADIUS_CM * scale); DrawCircleV(position, radius, (Color){80, 220, 125, 255}); DrawCircleLines( (int)position.x, (int)position.y, radius, @@ -1522,10 +1587,9 @@ void c_render(FishEnv* env) { ); } for (int i = 0; i < env->num_agents; i++) { - FishAgentState* agent = &env->agents[i]; - FishMovement* fish = &agent->movement; - Vector2 center = world_to_screen(env, fish->position_cm); - float radius = (float)(fish->body_radius_cm * scale); + FishAgent* agent = &env->agents[i]; + Vector2 center = world_to_screen(env, agent->pos_x, agent->pos_y); + float radius = agent->body_radius_cm * scale; if (agent->emits_eod) { float pulse = radius + 5.0f + @@ -1534,8 +1598,8 @@ void c_render(FishEnv* env) { (Color){color.r, color.g, color.b, 120}); } - float heading_x = cosf((float)fish->orientation); - float heading_y = -sinf((float)fish->orientation); + float heading_x = cosf(agent->orientation); + float heading_y = -sinf(agent->orientation); DrawRing(center, radius - 1.5f, radius + 1.5f, 0.0f, 360.0f, 32, color); Vector2 nose = { @@ -1545,10 +1609,10 @@ void c_render(FishEnv* env) { DrawLineEx(center, nose, 3.0f, color); Vector2 positive = world_to_screen( - env, monopoles[2 * i].position_cm + env, agent->eod_pos_x[0], agent->eod_pos_y[0] ); Vector2 negative = world_to_screen( - env, monopoles[2 * i + 1].position_cm + env, agent->eod_pos_x[1], agent->eod_pos_y[1] ); DrawCircleV(positive, 3.0f, RED); DrawCircleV(negative, 3.0f, BLUE); @@ -1556,19 +1620,17 @@ void c_render(FishEnv* env) { if (env->client->show_sensors) { for (int sensor_idx = 0; sensor_idx < NUM_KNOLLEN; sensor_idx++) { - float angle = uniform_sensor_angle( - (size_t)sensor_idx, NUM_KNOLLEN - ); - FishSensor sensor = radial_sensor( - angle, fish->body_radius_cm - ); - sensor = transform_sensor( - sensor, - fish->position_cm, - (float)fish->orientation + float sx, sy, snx, sny; + world_sensor( + agent->knollen_local_x[sensor_idx], + agent->knollen_local_y[sensor_idx], + agent->knollen_nx[sensor_idx], + agent->knollen_ny[sensor_idx], + agent->pos_x, agent->pos_y, agent->orientation, + &sx, &sy, &snx, &sny ); DrawCircleV( - world_to_screen(env, sensor.position_cm), + world_to_screen(env, sx, sy), 1.5f, (Color){184, 164, 224, 180} ); } From 959aadb582e253f1320e1186600556d437c05b36 Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Sat, 1 Aug 2026 13:15:30 -0400 Subject: [PATCH 16/20] Small speed up: Eat first food that matches conditions. --- ocean/wef/wef.h | 87 ++++++++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index bb315f9db5..9cf6991e89 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -90,7 +90,7 @@ typedef struct FishMotionProposal { float angular_velocity; } FishMotionProposal; -/* All per-fish state: pose, dynamics, electric sources, sensors, actions. */ +// All fish agent attributes: pose, dynamics, electric sources, sensors, actions. typedef struct FishAgent { float pos_x; float pos_y; @@ -119,8 +119,8 @@ typedef struct FishAgent { bool collided; float size; - int bite_cooldown; /* remaining steps; 0 = ready */ - int eat_cooldown; /* remaining steps; 0 = free to move / eat */ + int bite_cooldown; + int eat_cooldown; bool emits_eod; bool bite_action; bool was_bitten; @@ -128,18 +128,18 @@ typedef struct FishAgent { float last_action[ACTION_SIZE]; float ampullary_ema[NUM_AMPULLARY]; - /* EOD monopole pair in world frame (updated each scene rebuild). */ + // Electric Organ Discharge (EOD) monopole pair in world frame float eod_pos_x[2]; float eod_pos_y[2]; float eod_charge[2]; - /* Body dipoles in world frame (position is agent pos). */ + // Body dipoles in world frame float intrinsic_moment_x; float intrinsic_moment_y; float induced_moment_x; float induced_moment_y; - /* Local body-frame sensor geometry (set once at spawn). */ + // Fish sensors (initialized once in local frame) float morm_local_x[NUM_MORMYROMASTS]; float morm_local_y[NUM_MORMYROMASTS]; float morm_nx[NUM_MORMYROMASTS]; @@ -159,7 +159,7 @@ float vec_length_squared(float x, float y) { } float vec_length(float x, float y) { - return sqrtf(vec_length_squared(x, y)); + return sqrtf(x * x + y * y); } float clamp(float value, float minimum, float maximum) { @@ -205,6 +205,12 @@ void world_sensor( rotate(local_nx, local_ny, angle, out_nx, out_ny); } +float project_field( + float field_x, float field_y, float normal_x, float normal_y +) { + return field_x * normal_x + field_y * normal_y; +} + FishMotionProposal propose_motion( const FishAgent* fish, float move_command, @@ -571,14 +577,9 @@ void measure_electric_field_with_reflections( } // Receptor geometry and transduction -float project_field( - float field_x, float field_y, float normal_x, float normal_y +float uniform_sensor_angle( + size_t sensor_index, size_t num_sensors ) { - return field_x * normal_x + field_y * normal_y; -} - -float -uniform_sensor_angle(size_t sensor_index, size_t num_sensors) { return 2.0f * PI_F * (float)sensor_index / (float)num_sensors; } @@ -865,17 +866,31 @@ void c_allocate(FishEnv* env) { } void compute_observations(FishEnv* env) { - float dip_x[MAX_AGENTS + MAX_FOOD]; - float dip_y[MAX_AGENTS + MAX_FOOD]; - float dip_mx[MAX_AGENTS + MAX_FOOD]; - float dip_my[MAX_AGENTS + MAX_FOOD]; + /* Pack dipole sources once; all agents share the same electric scene. */ + float ind_x[MAX_AGENTS + MAX_FOOD]; + float ind_y[MAX_AGENTS + MAX_FOOD]; + float ind_mx[MAX_AGENTS + MAX_FOOD]; + float ind_my[MAX_AGENTS + MAX_FOOD]; + float int_x[MAX_AGENTS + MAX_FOOD]; + float int_y[MAX_AGENTS + MAX_FOOD]; + float int_mx[MAX_AGENTS + MAX_FOOD]; + float int_my[MAX_AGENTS + MAX_FOOD]; + int n_induced = pack_induced_sources(env, ind_x, ind_y, ind_mx, ind_my); + int n_intrinsic = pack_intrinsic_sources(env, int_x, int_y, int_mx, int_my); for (int i = 0; i < env->num_agents; i++) { FishAgent* agent = &env->agents[i]; float* obs = env->observations + i * OBS_SIZE; int cursor = 0; - int n_induced = pack_induced_sources(env, dip_x, dip_y, dip_mx, dip_my); + bool cons_eod = false; + for (int other = 0; other < env->num_agents; other++) { + if (other != i && env->agents[other].emits_eod) { + cons_eod = true; + break; + } + } + /* Mormyromasts: active/collective image after direct-EOD subtraction. */ for (int sensor_idx = 0; sensor_idx < NUM_MORMYROMASTS; sensor_idx++) { float sx, sy, snx, sny; @@ -889,7 +904,7 @@ void compute_observations(FishEnv* env) { measure_electric_field_with_reflections( sx, sy, NULL, NULL, NULL, 0, - dip_x, dip_y, dip_mx, dip_my, (size_t)n_induced, + ind_x, ind_y, ind_mx, ind_my, (size_t)n_induced, env->arena_size_x, env->arena_size_y, FIELD_EPS_M, REFLECTION_SCALE, false, &fx, &fy ); @@ -904,7 +919,6 @@ void compute_observations(FishEnv* env) { ); } - int n_intrinsic = pack_intrinsic_sources(env, dip_x, dip_y, dip_mx, dip_my); // Ampullary receptors: intrinsic sources with static self-field removed for (int sensor_idx = 0; sensor_idx < NUM_AMPULLARY; sensor_idx++) { float sx, sy, snx, sny; @@ -918,20 +932,13 @@ void compute_observations(FishEnv* env) { measure_electric_field_with_reflections( sx, sy, NULL, NULL, NULL, 0, - dip_x, dip_y, dip_mx, dip_my, (size_t)n_intrinsic, + int_x, int_y, int_mx, int_my, (size_t)n_intrinsic, env->arena_size_x, env->arena_size_y, FIELD_EPS_M, REFLECTION_SCALE, false, &fx, &fy ); float reading = project_field(fx, fy, snx, sny) - env->amp_intrinsic_baseline[sensor_idx]; - bool cons_eod = false; - for (int other = 0; other < env->num_agents; other++) { - if (other != i && env->agents[other].emits_eod) { - cons_eod = true; - break; - } - } reading *= random_multiplier(env, cons_eod ? 0.5f : 0.05f); obs[cursor++] = normalize_sensor_reading( reading, AMPULLARY_MIN_VM, @@ -1298,30 +1305,22 @@ void add_log(FishEnv* env) { env->log.n += 1.0f; } +// Eat first active pellet in the forward 45° cone within 2 cm (at most one per step). bool try_eat(FishEnv* env, int agent_idx) { FishAgent* agent = &env->agents[agent_idx]; - int nearest = -1; - float nearest_distance = INFINITY; for (int i = 0; i < env->num_food; i++) { if (!env->food[i].active) continue; if (!point_in_forward_cone( agent->pos_x, agent->pos_y, agent->orientation, env->food[i].pos_x, env->food[i].pos_y, EATING_RADIUS_CM, EATING_ANGLE)) continue; - float dx = env->food[i].pos_x - agent->pos_x; - float dy = env->food[i].pos_y - agent->pos_y; - float distance = vec_length_squared(dx, dy); - if (distance < nearest_distance) { - nearest = i; - nearest_distance = distance; - } + env->food[i].active = false; + env->food_eaten++; + agent->ate_food = true; + agent->eat_cooldown = EAT_COOLDOWN_STEPS; + return true; } - if (nearest < 0) return false; - env->food[nearest].active = false; - env->food_eaten++; - agent->ate_food = true; - agent->eat_cooldown = EAT_COOLDOWN_STEPS; - return true; + return false; } void c_step(FishEnv* env) { From 1d96eb98dcb306a6cc8d8fa704865c66c9a75419 Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Sat, 1 Aug 2026 13:36:48 -0400 Subject: [PATCH 17/20] Get rid of external motion proposal struct + add profile scripts. --- ocean/wef/profile.c | 286 +++++++++++++++++++++++++++++++++++++++ ocean/wef/run_profile.sh | 46 +++++++ ocean/wef/wef.h | 137 +++++++++---------- 3 files changed, 393 insertions(+), 76 deletions(-) create mode 100644 ocean/wef/profile.c create mode 100755 ocean/wef/run_profile.sh diff --git a/ocean/wef/profile.c b/ocean/wef/profile.c new file mode 100644 index 0000000000..02ace43f89 --- /dev/null +++ b/ocean/wef/profile.c @@ -0,0 +1,286 @@ +/* + * WEF per-thread rollout throughput (and optional gprof target). + * + * Build / run: + * ./ocean/wef/run_profile.sh + * ./ocean/wef/run_profile.sh --gprof + * ./ocean/wef/run_profile.sh --threads 8 --envs-per-thread 4 --steps 200 + * + * Each OpenMP thread owns a private set of envs and runs reset+step + * independently. Reports agent-steps/sec overall and per thread. + */ + +#include +#include +#include +#include +#include + +#ifndef WEF_PROFILE_NO_OMP +#include +#endif + +#include "wef.h" + +#define DEFAULT_NUM_FISH 4 +#define DEFAULT_THREADS 8 +#define DEFAULT_ENVS_PER_THREAD 4 +#define DEFAULT_STEPS 200 +#define DEFAULT_RESETS 1 + +typedef struct { + int num_fish; + int threads; + int envs_per_thread; + int steps; + int resets; +} Options; + +typedef struct { + double elapsed_s; + long long agent_steps; + double agent_sps; +} ThreadResult; + +static double timespec_seconds(struct timespec t0, struct timespec t1) { + return (double)(t1.tv_sec - t0.tv_sec) + + (double)(t1.tv_nsec - t0.tv_nsec) * 1e-9; +} + +static float random_action(unsigned int* rng) { + return 2.0f * (float)rand_r(rng) / (float)RAND_MAX - 1.0f; +} + +static void configure_env(FishEnv* env, unsigned int seed, int num_fish) { + memset(env, 0, sizeof(*env)); + env->num_agents = num_fish; + env->arena_size_x = 70.0f; + env->arena_size_y = 70.0f; + env->min_arena_size_x = 70.0f; + env->min_arena_size_y = 70.0f; + env->max_arena_size_x = 70.0f; + env->max_arena_size_y = 70.0f; + env->food_distribution = FOOD_RANDOM; + env->configured_num_food = 64; + env->electric_field_radius_cm = 15.0f; + env->episode_length = 4096; + env->rng = seed ? seed : 1u; +} + +static void fill_random_actions(FishEnv* env, unsigned int* rng) { + for (int a = 0; a < env->num_agents; a++) { + float* action = env->actions + a * ACTION_SIZE; + for (int k = 0; k < ACTION_SIZE; k++) { + action[k] = random_action(rng); + } + } +} + +static void print_usage(const char* argv0) { + printf( + "Usage: %s [options]\n" + " --threads N Worker threads (default %d)\n" + " --envs-per-thread N Envs owned by each thread (default %d)\n" + " --num-fish N Agents per env (default %d)\n" + " --steps N c_step calls per reset (default %d)\n" + " --resets N c_reset cycles per env (default %d)\n" + " -h, --help\n", + argv0, + DEFAULT_THREADS, + DEFAULT_ENVS_PER_THREAD, + DEFAULT_NUM_FISH, + DEFAULT_STEPS, + DEFAULT_RESETS + ); +} + +static bool parse_options(int argc, char** argv, Options* opt) { + *opt = (Options){ + .num_fish = DEFAULT_NUM_FISH, + .threads = DEFAULT_THREADS, + .envs_per_thread = DEFAULT_ENVS_PER_THREAD, + .steps = DEFAULT_STEPS, + .resets = DEFAULT_RESETS, + }; + for (int i = 1; i < argc; i++) { + if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help")) { + print_usage(argv[0]); + return false; + } else if (!strcmp(argv[i], "--threads") && i + 1 < argc) { + opt->threads = atoi(argv[++i]); + } else if (!strcmp(argv[i], "--envs-per-thread") && i + 1 < argc) { + opt->envs_per_thread = atoi(argv[++i]); + } else if (!strcmp(argv[i], "--num-fish") && i + 1 < argc) { + opt->num_fish = atoi(argv[++i]); + } else if (!strcmp(argv[i], "--steps") && i + 1 < argc) { + opt->steps = atoi(argv[++i]); + } else if (!strcmp(argv[i], "--resets") && i + 1 < argc) { + opt->resets = atoi(argv[++i]); + } else { + fprintf(stderr, "Unknown option: %s\n", argv[i]); + print_usage(argv[0]); + return false; + } + } + if (opt->num_fish <= 0 || opt->threads <= 0 || + opt->envs_per_thread <= 0 || opt->steps <= 0 || + opt->resets <= 0) { + fprintf(stderr, "all numeric options must be positive\n"); + return false; + } +#ifdef WEF_PROFILE_NO_OMP + if (opt->threads != 1) { + fprintf(stderr, "OpenMP disabled: forcing --threads 1\n"); + opt->threads = 1; + } +#endif + return true; +} + +/* One thread's private rollout: returns local agent-steps and wall time. */ +static ThreadResult run_thread_rollout( + int thread_id, + int num_fish, + int envs_per_thread, + int steps, + int resets +) { + FishEnv* envs = + (FishEnv*)calloc((size_t)envs_per_thread, sizeof(FishEnv)); + unsigned int* rngs = + (unsigned int*)calloc((size_t)envs_per_thread, sizeof(unsigned int)); + ThreadResult result = {0}; + if (!envs || !rngs) { + fprintf(stderr, "thread %d: allocation failed\n", thread_id); + free(envs); + free(rngs); + return result; + } + + for (int e = 0; e < envs_per_thread; e++) { + unsigned int seed = + (unsigned int)(thread_id * 10007 + e + 1); + configure_env(&envs[e], seed, num_fish); + c_allocate(&envs[e]); + rngs[e] = seed * 0x9e3779b9u + 1u; + } + + /* Warmup (not timed). */ + for (int e = 0; e < envs_per_thread; e++) { + c_reset(&envs[e]); + for (int t = 0; t < 3; t++) { + fill_random_actions(&envs[e], &rngs[e]); + c_step(&envs[e]); + } + } + + struct timespec t0, t1; + clock_gettime(CLOCK_MONOTONIC, &t0); + + for (int r = 0; r < resets; r++) { + for (int e = 0; e < envs_per_thread; e++) { + c_reset(&envs[e]); + for (int t = 0; t < steps; t++) { + fill_random_actions(&envs[e], &rngs[e]); + c_step(&envs[e]); + } + } + } + + clock_gettime(CLOCK_MONOTONIC, &t1); + result.elapsed_s = timespec_seconds(t0, t1); + result.agent_steps = + (long long)resets * (long long)envs_per_thread * + (long long)steps * (long long)num_fish; + result.agent_sps = result.elapsed_s > 0.0 + ? (double)result.agent_steps / result.elapsed_s + : 0.0; + + for (int e = 0; e < envs_per_thread; e++) { + free_allocated(&envs[e]); + } + free(envs); + free(rngs); + return result; +} + +int main(int argc, char** argv) { + Options opt; + if (!parse_options(argc, argv, &opt)) { + return 1; + } + + ThreadResult* results = + (ThreadResult*)calloc((size_t)opt.threads, sizeof(ThreadResult)); + if (!results) { + fprintf(stderr, "allocation failed\n"); + return 1; + } + + printf("wef per-thread rollout SPS\n"); + printf(" threads=%d envs_per_thread=%d num_fish=%d\n", + opt.threads, opt.envs_per_thread, opt.num_fish); + printf(" resets=%d steps_per_reset=%d\n", opt.resets, opt.steps); + printf(" total_envs=%d sizeof(FishEnv)=%zu\n", + opt.threads * opt.envs_per_thread, sizeof(FishEnv)); + fflush(stdout); + + struct timespec wall0, wall1; + clock_gettime(CLOCK_MONOTONIC, &wall0); + +#ifndef WEF_PROFILE_NO_OMP + #pragma omp parallel num_threads(opt.threads) + { + int tid = omp_get_thread_num(); + results[tid] = run_thread_rollout( + tid, opt.num_fish, opt.envs_per_thread, opt.steps, opt.resets + ); + } +#else + results[0] = run_thread_rollout( + 0, opt.num_fish, opt.envs_per_thread, opt.steps, opt.resets + ); +#endif + + clock_gettime(CLOCK_MONOTONIC, &wall1); + double wall_s = timespec_seconds(wall0, wall1); + + long long total_agent_steps = 0; + double sum_thread_sps = 0.0; + double min_thread_sps = 1e300; + double max_thread_sps = 0.0; + double sum_thread_elapsed = 0.0; + + printf("\n per-thread agent SPS:\n"); + for (int t = 0; t < opt.threads; t++) { + ThreadResult* r = &results[t]; + total_agent_steps += r->agent_steps; + sum_thread_sps += r->agent_sps; + sum_thread_elapsed += r->elapsed_s; + if (r->agent_sps < min_thread_sps) min_thread_sps = r->agent_sps; + if (r->agent_sps > max_thread_sps) max_thread_sps = r->agent_sps; + printf(" thread %2d: SPS=%.1f steps=%lld elapsed=%.4fs\n", + t, r->agent_sps, r->agent_steps, r->elapsed_s); + } + + double mean_thread_sps = sum_thread_sps / (double)opt.threads; + /* Aggregate SPS from total work over wall-clock (includes imbalance). */ + double wall_sps = + wall_s > 0.0 ? (double)total_agent_steps / wall_s : 0.0; + /* Ideal scale-out: sum of per-thread rates (no load imbalance). */ + double sum_sps = sum_thread_sps; + + printf("\n summary (agent-steps/sec):\n"); + printf(" per_thread_mean=%.1f\n", mean_thread_sps); + printf(" per_thread_min=%.1f\n", min_thread_sps); + printf(" per_thread_max=%.1f\n", max_thread_sps); + printf(" sum_of_threads=%.1f (if perfectly parallel)\n", sum_sps); + printf(" wall_SPS=%.1f (total work / wall time)\n", wall_sps); + printf(" wall_elapsed=%.4fs total_agent_steps=%lld\n", + wall_s, total_agent_steps); + printf(" mean_thread_elapsed=%.4fs\n", + sum_thread_elapsed / (double)opt.threads); + + free(results); + return 0; +} diff --git a/ocean/wef/run_profile.sh b/ocean/wef/run_profile.sh new file mode 100755 index 0000000000..e88fb3ab18 --- /dev/null +++ b/ocean/wef/run_profile.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +# Build and run wef per-thread rollout SPS. --gprof builds -pg and runs gprof. +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")/../.." && pwd)" +cd "$ROOT" + +SRC=ocean/wef/profile.c +OUT=./wef_profile +OUT_GPROF=./wef_profile_gprof +REPORT=wef_gprof_report.txt + +INCS=(-I./raylib-5.5_linux_amd64/include -I./src -I./vendor -I./ocean/wef) +LIBS=(raylib-5.5_linux_amd64/lib/libraylib.a -lGL -lm -lpthread -ldl -lrt) +CC_FAST="${CC:-clang}" +CC_PROF="${CC_PROF:-gcc}" + +GPROF=0 +ARGS=() +for a in "$@"; do + [[ "$a" == "--gprof" ]] && GPROF=1 || ARGS+=("$a") +done + +if [[ $GPROF -eq 1 ]]; then + echo "Building $OUT_GPROF (-pg, serial)..." + "$CC_PROF" -pg -O1 -g -DNDEBUG -DWEF_PROFILE_NO_OMP \ + "${INCS[@]}" "$SRC" -o "$OUT_GPROF" "${LIBS[@]}" -DPLATFORM_DESKTOP + + rm -f gmon.out + # Serial rollout sized for a readable flat profile. + "$OUT_GPROF" --threads 1 --envs-per-thread "${PROFILE_ENVS:-32}" \ + --resets "${PROFILE_RESETS:-5}" --steps "${PROFILE_STEPS:-150}" \ + "${ARGS[@]}" + + [[ -f gmon.out ]] || { echo "error: gmon.out missing" >&2; exit 1; } + gprof -b -p "$OUT_GPROF" gmon.out > "$REPORT" + head -n 50 "$REPORT" + echo + echo "Full flat profile: $REPORT" +else + echo "Building $OUT (OpenMP, -O3)..." + "$CC_FAST" -O3 -DNDEBUG -fopenmp \ + "${INCS[@]}" "$SRC" -o "$OUT" "${LIBS[@]}" -fopenmp -DPLATFORM_DESKTOP + echo + "$OUT" "${ARGS[@]}" +fi diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index 9cf6991e89..291d33c42c 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -67,8 +67,9 @@ #define MORMYROMAST_MAX_VM 5e-2f #define KNOLLEN_MIN_VM 2e-7f -// Approximate influence range for first-order -// wall images (cm) for electric field calculations. +// Approximate influence range for first-order wall images (cm) for electric field +// calculations. Reducing this will speed up the simulation but may reduce accuracy +// near walls. #define REFLECTION_WALL_RANGE_CM 100.0f #define MOTION_FIRST_ORDER 1 @@ -81,16 +82,7 @@ #define WALL_TOP 3 #define NUM_WALLS 4 -/* Temporary propose/commit payload for agent motion. */ -typedef struct FishMotionProposal { - float pos_x; - float pos_y; - float orientation; - float linear_velocity; - float angular_velocity; -} FishMotionProposal; - -// All fish agent attributes: pose, dynamics, electric sources, sensors, actions. +// All fish agent attributes: pose, dynamics, electric sources, sensors, actions typedef struct FishAgent { float pos_x; float pos_y; @@ -166,12 +158,10 @@ float clamp(float value, float minimum, float maximum) { return fminf(maximum, fmaxf(minimum, value)); } -/* Stable wrap to [-pi, pi], identical to movement._wrap_angle. */ float wrap_angle(float angle) { return atan2f(sinf(angle), cosf(angle)); } -/* Rotate a vector; add translation separately when transforming a position. */ void rotate(float x, float y, float angle, float* out_x, float* out_y) { float c = cosf(angle); float s = sinf(angle); @@ -206,67 +196,63 @@ void world_sensor( } float project_field( - float field_x, float field_y, float normal_x, float normal_y -) { + float field_x, float field_y, float normal_x, float normal_y) { return field_x * normal_x + field_y * normal_y; } -FishMotionProposal propose_motion( - const FishAgent* fish, +// Integrate commanded motion onto the agent (pose + velocities) +void propose_motion( + FishAgent* fish, float move_command, float turn_command, bool eating_frozen ) { - FishMotionProposal proposal = { - .pos_x = fish->pos_x, - .pos_y = fish->pos_y, - .orientation = fish->orientation, - .linear_velocity = 0.0f, - .angular_velocity = 0.0f, - }; + float linear_velocity = 0.0f; + float angular_velocity = 0.0f; if (fish->motion_order == MOTION_FIRST_ORDER) { float move = eating_frozen ? 0.0f : move_command; float turn = eating_frozen ? 0.0f : turn_command; - proposal.angular_velocity = turn * fish->max_angular_velocity; - proposal.linear_velocity = move * fish->max_linear_velocity; + angular_velocity = turn * fish->max_angular_velocity; + linear_velocity = move * fish->max_linear_velocity; } else { // Second-order motion with acceleration and drag - proposal.linear_velocity = + linear_velocity = fish->linear_velocity + move_command * fish->max_linear_acceleration; - proposal.angular_velocity = + angular_velocity = fish->angular_velocity + turn_command * fish->max_angular_acceleration; - proposal.linear_velocity = clamp( - proposal.linear_velocity, + linear_velocity = clamp( + linear_velocity, fish->min_linear_velocity, fish->max_linear_velocity ); - if (!fish->backwards && proposal.linear_velocity < 0.0f) { - proposal.linear_velocity = 0.0f; + if (!fish->backwards && linear_velocity < 0.0f) { + linear_velocity = 0.0f; } - proposal.linear_velocity *= fish->linear_drag_factor; - proposal.angular_velocity *= fish->angular_drag_factor; - proposal.angular_velocity = clamp( - proposal.angular_velocity, + linear_velocity *= fish->linear_drag_factor; + angular_velocity *= fish->angular_drag_factor; + angular_velocity = clamp( + angular_velocity, fish->min_angular_velocity, fish->max_angular_velocity ); if (eating_frozen) { - proposal.linear_velocity = 0.0f; - proposal.angular_velocity = 0.0f; + linear_velocity = 0.0f; + angular_velocity = 0.0f; } + fish->linear_velocity = linear_velocity; + fish->angular_velocity = angular_velocity; } - proposal.orientation = wrap_angle(fish->orientation + proposal.angular_velocity); - float hx = cosf(proposal.orientation); - float hy = sinf(proposal.orientation); - proposal.pos_x = fish->pos_x + hx * proposal.linear_velocity; - proposal.pos_y = fish->pos_y + hy * proposal.linear_velocity; - return proposal; + fish->orientation = wrap_angle(fish->orientation + angular_velocity); + float hx = cosf(fish->orientation); + float hy = sinf(fish->orientation); + fish->pos_x += hx * linear_velocity; + fish->pos_y += hy * linear_velocity; } bool motion_collides( @@ -292,25 +278,22 @@ bool motion_collides( } /* - * Commit a proposal and enforce a rectangular arena. Orientation always - * changes even when translation is blocked, allowing turning in place. + * Resolve collisions/walls after propose_motion. Orientation from propose is + * always kept (turn in place). prev_* is pose before propose. */ bool commit_motion( FishAgent* fish, - FishMotionProposal proposal, + float prev_x, + float prev_y, + float prev_orientation, bool collided, float arena_size_x, float arena_size_y ) { - float previous_x = fish->pos_x; - float previous_y = fish->pos_y; - float previous_orientation = fish->orientation; - - fish->last_orientation = previous_orientation; - fish->orientation = proposal.orientation; - if (!collided) { - fish->pos_x = proposal.pos_x; - fish->pos_y = proposal.pos_y; + fish->last_orientation = prev_orientation; + if (collided) { + fish->pos_x = prev_x; + fish->pos_y = prev_y; } float unclipped_x = fish->pos_x; @@ -328,19 +311,17 @@ bool commit_motion( bool hit_wall = fish->pos_x != unclipped_x || fish->pos_y != unclipped_y; bool stopped = collided || hit_wall; - if (fish->motion_order == MOTION_SECOND_ORDER) { - fish->linear_velocity = - stopped ? 0.0f : proposal.linear_velocity; - fish->angular_velocity = - stopped ? 0.0f : proposal.angular_velocity; + if (fish->motion_order == MOTION_SECOND_ORDER && stopped) { + fish->linear_velocity = 0.0f; + fish->angular_velocity = 0.0f; } fish->collided = collided; - fish->disp_ground_x = fish->pos_x - previous_x; - fish->disp_ground_y = fish->pos_y - previous_y; + fish->disp_ground_x = fish->pos_x - prev_x; + fish->disp_ground_y = fish->pos_y - prev_y; rotate( fish->disp_ground_x, fish->disp_ground_y, - -previous_orientation, + -prev_orientation, &fish->disp_ego_x, &fish->disp_ego_y ); return hit_wall; @@ -866,7 +847,7 @@ void c_allocate(FishEnv* env) { } void compute_observations(FishEnv* env) { - /* Pack dipole sources once; all agents share the same electric scene. */ + // Pack dipole sources once; all agents share the same electric scene float ind_x[MAX_AGENTS + MAX_FOOD]; float ind_y[MAX_AGENTS + MAX_FOOD]; float ind_mx[MAX_AGENTS + MAX_FOOD]; @@ -891,7 +872,7 @@ void compute_observations(FishEnv* env) { } } - /* Mormyromasts: active/collective image after direct-EOD subtraction. */ + // Mormyromasts: active/collective image after direct-EOD subtraction. for (int sensor_idx = 0; sensor_idx < NUM_MORMYROMASTS; sensor_idx++) { float sx, sy, snx, sny; world_sensor( @@ -946,7 +927,7 @@ void compute_observations(FishEnv* env) { ); } - /* Knollenorgans: one directional 12-receptor block per conspecific. */ + // Knollenorgans: one directional 12-receptor block per conspecific. int metadata_start = NUM_MORMYROMASTS + NUM_AMPULLARY + NUM_KNOLLEN * (MAX_AGENTS - 1); @@ -1327,13 +1308,14 @@ void c_step(FishEnv* env) { env->tick++; // Reset agent state variables - // NOTE(DC): zeroing out rewards and terminals is already done in vecenv, shall we delete it here? for (int i = 0; i < env->num_agents; i++) { env->agents[i].was_bitten = false; env->agents[i].ate_food = false; env->rewards[i] = 0.0f; env->terminals[i] = 0.0f; } + + // Move fish and update state for (int i = 0; i < env->num_agents; i++) { FishAgent* agent = &env->agents[i]; float* raw_action = env->actions + i * ACTION_SIZE; @@ -1353,15 +1335,16 @@ void c_step(FishEnv* env) { env->rewards[i] += EAT_REWARD; } } - FishMotionProposal proposal = propose_motion( - agent, move, turn, agent->eat_cooldown > 0 - ); + float prev_x = agent->pos_x; + float prev_y = agent->pos_y; + float prev_ori = agent->orientation; + propose_motion(agent, move, turn, agent->eat_cooldown > 0); bool collided = motion_collides( - proposal.pos_x, proposal.pos_y, agent->body_radius_cm, + agent->pos_x, agent->pos_y, agent->body_radius_cm, env->agents, (size_t)env->num_agents, (size_t)i ); bool hit_wall = commit_motion( - agent, proposal, collided, + agent, prev_x, prev_y, prev_ori, collided, env->arena_size_x, env->arena_size_y ); env->collisions_fish += collided ? 1 : 0; @@ -1370,7 +1353,7 @@ void c_step(FishEnv* env) { } } - /* Bite resolution occurs after all fish have moved. */ + // Bite dynamics occur after all fish have moved. for (int i = 0; i < env->num_agents; i++) { FishAgent* attacker = &env->agents[i]; if (!attacker->bite_action) continue; @@ -1396,13 +1379,15 @@ void c_step(FishEnv* env) { env->rewards[victim] += BITTEN_REWARD * (1.0f + fmaxf(0.0f, size_difference)); } } - + + // Update cooldowns and accumulate rewards for (int i = 0; i < env->num_agents; i++) { FishAgent* agent = &env->agents[i]; if (agent->eat_cooldown > 0) agent->eat_cooldown -= 1; if (agent->bite_cooldown > 0) agent->bite_cooldown -= 1; env->episode_return += env->rewards[i]; } + build_electric_scene(env); compute_observations(env); From cc53e9841f8dffc724158e983a5e18e312b1e39a Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Sat, 1 Aug 2026 14:17:15 -0400 Subject: [PATCH 18/20] Minor. --- ocean/wef/wef.h | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index 291d33c42c..2d6449d8ab 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -69,8 +69,10 @@ // Approximate influence range for first-order wall images (cm) for electric field // calculations. Reducing this will speed up the simulation but may reduce accuracy -// near walls. +// near walls. Override at compile time: -DREFLECTION_WALL_RANGE_CM=30.0f +#ifndef REFLECTION_WALL_RANGE_CM #define REFLECTION_WALL_RANGE_CM 100.0f +#endif #define MOTION_FIRST_ORDER 1 #define MOTION_SECOND_ORDER 2 @@ -378,8 +380,7 @@ void measure_electric_field( float ox = measurement_mx - source_mx; float oy = measurement_my - source_my; float distance = vec_length(ox, oy) + eps_m; - float weight = - K_COULOMB * mono_q[i] / (distance * distance * distance); + float weight = K_COULOMB * mono_q[i] / (distance * distance * distance); field_x += ox * weight; field_y += oy * weight; } @@ -417,7 +418,7 @@ void induce_dipole_moment( *out_y = external_field_y * scale; } -/* Perpendicular distance from a point to a rectangular arena wall. */ +// Perpendicular distance from a point to a rectangular arena wall. static inline float distance_to_wall_cm( float pos_x, float pos_y, float arena_size_x, float arena_size_y, int wall ) { @@ -862,7 +863,7 @@ void compute_observations(FishEnv* env) { for (int i = 0; i < env->num_agents; i++) { FishAgent* agent = &env->agents[i]; float* obs = env->observations + i * OBS_SIZE; - int cursor = 0; + int obs_idx = 0; bool cons_eod = false; for (int other = 0; other < env->num_agents; other++) { @@ -881,8 +882,7 @@ void compute_observations(FishEnv* env) { agent->pos_x, agent->pos_y, agent->orientation, &sx, &sy, &snx, &sny ); - float fx, fy; - measure_electric_field_with_reflections( + float fx, fy; measure_electric_field_with_reflections( sx, sy, NULL, NULL, NULL, 0, ind_x, ind_y, ind_mx, ind_my, (size_t)n_induced, @@ -894,7 +894,7 @@ void compute_observations(FishEnv* env) { reading *= 100.0f; } reading *= random_multiplier(env, 0.05f); - obs[cursor++] = normalize_sensor_reading( + obs[obs_idx++] = normalize_sensor_reading( reading, MORMYROMAST_MIN_VM, MORMYROMAST_MAX_VM, SENSOR_EPS ); @@ -921,7 +921,7 @@ void compute_observations(FishEnv* env) { project_field(fx, fy, snx, sny) - env->amp_intrinsic_baseline[sensor_idx]; reading *= random_multiplier(env, cons_eod ? 0.5f : 0.05f); - obs[cursor++] = normalize_sensor_reading( + obs[obs_idx++] = normalize_sensor_reading( reading, AMPULLARY_MIN_VM, AMPULLARY_MAX_VM, SENSOR_EPS ); @@ -963,10 +963,10 @@ void compute_observations(FishEnv* env) { ? 0.0f : (raw_knollen < 0.0f ? -1.0f : 1.0f); } - obs[cursor++] = value; + obs[obs_idx++] = value; } bool detected = false; - int block_start = cursor - NUM_KNOLLEN; + int block_start = obs_idx - NUM_KNOLLEN; for (int k = 0; k < NUM_KNOLLEN; k++) { if (obs[block_start + k] != 0.0f) { detected = true; @@ -983,24 +983,24 @@ void compute_observations(FishEnv* env) { cons_slot++; } while (cons_slot < MAX_AGENTS - 1) { - for (int k = 0; k < NUM_KNOLLEN; k++) obs[cursor++] = 0.0f; + for (int k = 0; k < NUM_KNOLLEN; k++) obs[obs_idx++] = 0.0f; obs[metadata_start + cons_slot++] = 0.0f; } - cursor = metadata_start + MAX_AGENTS - 1; + obs_idx = metadata_start + MAX_AGENTS - 1; for (int action_idx = 0; action_idx < ACTION_SIZE; action_idx++) { - obs[cursor++] = agent->last_action[action_idx]; + obs[obs_idx++] = agent->last_action[action_idx]; } - obs[cursor++] = 0.0f; /* fatigue, retained for upstream layout */ - obs[cursor++] = agent->was_bitten ? 1.0f : 0.0f; - obs[cursor++] = agent->size; - obs[cursor++] = + obs[obs_idx++] = 0.0f; /* fatigue, retained for upstream layout */ + obs[obs_idx++] = agent->was_bitten ? 1.0f : 0.0f; + obs[obs_idx++] = agent->size; + obs[obs_idx++] = (float)agent->bite_cooldown / (float)BITE_COOLDOWN_STEPS; - obs[cursor++] = clamp( + obs[obs_idx++] = clamp( agent->disp_ego_x / agent->max_linear_velocity, -1.0f, 1.0f); - obs[cursor++] = clamp( + obs[obs_idx++] = clamp( agent->disp_ego_y / agent->max_linear_velocity, -1.0f, 1.0f); - obs[cursor++] = + obs[obs_idx++] = (float)agent->eat_cooldown / (float)EAT_COOLDOWN_STEPS; } } From acecaa64d4c3f862a5b6dd8e5f07c7fca58d7cfd Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Sun, 2 Aug 2026 13:21:30 -0400 Subject: [PATCH 19/20] Optimization: measure_electric_fields() was called twice near walls. Refactor leads to 1.6x speed up. Train SPS is 100k now. --- artifacts/wef/reflection_range_sps.json | 288 ++++++++++++++++++++++++ artifacts/wef/reflection_range_sps.png | Bin 0 -> 102481 bytes ocean/wef/wef.h | 200 ++++++++-------- 3 files changed, 395 insertions(+), 93 deletions(-) create mode 100644 artifacts/wef/reflection_range_sps.json create mode 100644 artifacts/wef/reflection_range_sps.png diff --git a/artifacts/wef/reflection_range_sps.json b/artifacts/wef/reflection_range_sps.json new file mode 100644 index 0000000000..d17e9fe0f3 --- /dev/null +++ b/artifacts/wef/reflection_range_sps.json @@ -0,0 +1,288 @@ +{ + "metric": "agent-steps/sec", + "description": "single_thread_sps: SPS with --threads 1; sum_of_threads_sps: sum of per-thread SPS with OpenMP (threads=8), ideal parallel scale-out", + "ranges_cm": [ + 10, + 20, + 30, + 40, + 50, + 60, + 70, + 100 + ], + "results": [ + { + "reflection_wall_range_cm": 10, + "single_thread_sps": 27239.5, + "sum_of_threads_sps": 218251.0, + "multi_wall_sps": 213674.5, + "multi_per_thread_mean": 27281.4, + "config": { + "threads": 8, + "envs_per_thread": 4, + "steps": 10000, + "resets": 2, + "num_fish": 4 + }, + "raw": { + "single": { + "threads": 1, + "per_thread_mean": 27239.5, + "per_thread_min": 27239.5, + "per_thread_max": 27239.5, + "sum_of_threads": 27239.5, + "wall_SPS": 27235.7, + "wall_elapsed": 11.7493 + }, + "multi": { + "threads": 8, + "per_thread_mean": 27281.4, + "per_thread_min": 26717.5, + "per_thread_max": 28205.6, + "sum_of_threads": 218251.0, + "wall_SPS": 213674.5, + "wall_elapsed": 11.9808 + } + } + }, + { + "reflection_wall_range_cm": 20, + "single_thread_sps": 26126.8, + "sum_of_threads_sps": 208257.8, + "multi_wall_sps": 204341.6, + "multi_per_thread_mean": 26032.2, + "config": { + "threads": 8, + "envs_per_thread": 4, + "steps": 10000, + "resets": 2, + "num_fish": 4 + }, + "raw": { + "single": { + "threads": 1, + "per_thread_mean": 26126.8, + "per_thread_min": 26126.8, + "per_thread_max": 26126.8, + "sum_of_threads": 26126.8, + "wall_SPS": 26122.1, + "wall_elapsed": 12.2502 + }, + "multi": { + "threads": 8, + "per_thread_mean": 26032.2, + "per_thread_min": 25547.8, + "per_thread_max": 26948.7, + "sum_of_threads": 208257.8, + "wall_SPS": 204341.6, + "wall_elapsed": 12.528 + } + } + }, + { + "reflection_wall_range_cm": 30, + "single_thread_sps": 25079.2, + "sum_of_threads_sps": 199215.2, + "multi_wall_sps": 196092.2, + "multi_per_thread_mean": 24901.9, + "config": { + "threads": 8, + "envs_per_thread": 4, + "steps": 10000, + "resets": 2, + "num_fish": 4 + }, + "raw": { + "single": { + "threads": 1, + "per_thread_mean": 25079.2, + "per_thread_min": 25079.2, + "per_thread_max": 25079.2, + "sum_of_threads": 25079.2, + "wall_SPS": 25073.7, + "wall_elapsed": 12.7624 + }, + "multi": { + "threads": 8, + "per_thread_mean": 24901.9, + "per_thread_min": 24517.6, + "per_thread_max": 25504.5, + "sum_of_threads": 199215.2, + "wall_SPS": 196092.2, + "wall_elapsed": 13.0551 + } + } + }, + { + "reflection_wall_range_cm": 40, + "single_thread_sps": 24027.7, + "sum_of_threads_sps": 188019.6, + "multi_wall_sps": 179597.5, + "multi_per_thread_mean": 23502.4, + "config": { + "threads": 8, + "envs_per_thread": 4, + "steps": 10000, + "resets": 2, + "num_fish": 4 + }, + "raw": { + "single": { + "threads": 1, + "per_thread_mean": 24027.7, + "per_thread_min": 24027.7, + "per_thread_max": 24027.7, + "sum_of_threads": 24027.7, + "wall_SPS": 24020.5, + "wall_elapsed": 13.322 + }, + "multi": { + "threads": 8, + "per_thread_mean": 23502.4, + "per_thread_min": 22455.7, + "per_thread_max": 24087.9, + "sum_of_threads": 188019.6, + "wall_SPS": 179597.5, + "wall_elapsed": 14.2541 + } + } + }, + { + "reflection_wall_range_cm": 50, + "single_thread_sps": 23156.4, + "sum_of_threads_sps": 181042.8, + "multi_wall_sps": 175911.1, + "multi_per_thread_mean": 22630.4, + "config": { + "threads": 8, + "envs_per_thread": 4, + "steps": 10000, + "resets": 2, + "num_fish": 4 + }, + "raw": { + "single": { + "threads": 1, + "per_thread_mean": 23156.4, + "per_thread_min": 23156.4, + "per_thread_max": 23156.4, + "sum_of_threads": 23156.4, + "wall_SPS": 23149.2, + "wall_elapsed": 13.8234 + }, + "multi": { + "threads": 8, + "per_thread_mean": 22630.4, + "per_thread_min": 21995.8, + "per_thread_max": 22985.7, + "sum_of_threads": 181042.8, + "wall_SPS": 175911.1, + "wall_elapsed": 14.5528 + } + } + }, + { + "reflection_wall_range_cm": 60, + "single_thread_sps": 22289.9, + "sum_of_threads_sps": 173629.7, + "multi_wall_sps": 170033.3, + "multi_per_thread_mean": 21703.7, + "config": { + "threads": 8, + "envs_per_thread": 4, + "steps": 10000, + "resets": 2, + "num_fish": 4 + }, + "raw": { + "single": { + "threads": 1, + "per_thread_mean": 22289.9, + "per_thread_min": 22289.9, + "per_thread_max": 22289.9, + "sum_of_threads": 22289.9, + "wall_SPS": 22282.3, + "wall_elapsed": 14.3612 + }, + "multi": { + "threads": 8, + "per_thread_mean": 21703.7, + "per_thread_min": 21261.9, + "per_thread_max": 22268.0, + "sum_of_threads": 173629.7, + "wall_SPS": 170033.3, + "wall_elapsed": 15.0559 + } + } + }, + { + "reflection_wall_range_cm": 70, + "single_thread_sps": 15052.2, + "sum_of_threads_sps": 118888.1, + "multi_wall_sps": 116519.8, + "multi_per_thread_mean": 14861.0, + "config": { + "threads": 8, + "envs_per_thread": 4, + "steps": 10000, + "resets": 2, + "num_fish": 4 + }, + "raw": { + "single": { + "threads": 1, + "per_thread_mean": 15052.2, + "per_thread_min": 15052.2, + "per_thread_max": 15052.2, + "sum_of_threads": 15052.2, + "wall_SPS": 15048.5, + "wall_elapsed": 21.2645 + }, + "multi": { + "threads": 8, + "per_thread_mean": 14861.0, + "per_thread_min": 14568.7, + "per_thread_max": 15163.8, + "sum_of_threads": 118888.1, + "wall_SPS": 116519.8, + "wall_elapsed": 21.9705 + } + } + }, + { + "reflection_wall_range_cm": 100, + "single_thread_sps": 15043.2, + "sum_of_threads_sps": 118772.8, + "multi_wall_sps": 116291.8, + "multi_per_thread_mean": 14846.6, + "config": { + "threads": 8, + "envs_per_thread": 4, + "steps": 10000, + "resets": 2, + "num_fish": 4 + }, + "raw": { + "single": { + "threads": 1, + "per_thread_mean": 15043.2, + "per_thread_min": 15043.2, + "per_thread_max": 15043.2, + "sum_of_threads": 15043.2, + "wall_SPS": 15039.5, + "wall_elapsed": 21.2774 + }, + "multi": { + "threads": 8, + "per_thread_mean": 14846.6, + "per_thread_min": 14540.0, + "per_thread_max": 15131.3, + "sum_of_threads": 118772.8, + "wall_SPS": 116291.8, + "wall_elapsed": 22.0136 + } + } + } + ] +} diff --git a/artifacts/wef/reflection_range_sps.png b/artifacts/wef/reflection_range_sps.png new file mode 100644 index 0000000000000000000000000000000000000000..999ad0b0bc438a81bc290dc08a466090a40d3211 GIT binary patch literal 102481 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 literal 0 HcmV?d00001 diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index 2d6449d8ab..23c27ce248 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -279,10 +279,6 @@ bool motion_collides( return false; } -/* - * Resolve collisions/walls after propose_motion. Orientation from propose is - * always kept (turn in place). prev_* is pose before propose. - */ bool commit_motion( FishAgent* fish, float prev_x, @@ -348,10 +344,56 @@ bool point_in_forward_cone( } // Electrostatic field model + +/* + * Accumulate field from one monopole (Coulomb). measurement_* in meters; + * source positions in cm. eps_m added to distance (matches upstream). + */ +static inline void accumulate_monopole_field( + float measurement_mx, + float measurement_my, + float source_x_cm, + float source_y_cm, + float charge_c, + float eps_m, + float* field_x, + float* field_y +) { + float ox = measurement_mx - source_x_cm * CM_TO_M; + float oy = measurement_my - source_y_cm * CM_TO_M; + float distance = vec_length(ox, oy) + eps_m; + float weight = K_COULOMB * charge_c / (distance * distance * distance); + *field_x += ox * weight; + *field_y += oy * weight; +} + +/* Accumulate field from one dipole (Coulomb). */ +static inline void accumulate_dipole_field( + float measurement_mx, + float measurement_my, + float source_x_cm, + float source_y_cm, + float moment_x, + float moment_y, + float eps_m, + float* field_x, + float* field_y +) { + float ox = measurement_mx - source_x_cm * CM_TO_M; + float oy = measurement_my - source_y_cm * CM_TO_M; + float distance = vec_length(ox, oy) + eps_m; + float r2 = distance * distance; + float r3 = r2 * distance; + float r5 = r3 * r2; + float moment_dot_offset = moment_x * ox + moment_y * oy; + float axial = 3.0f * moment_dot_offset / r5; + *field_x += K_COULOMB * (ox * axial - moment_x / r3); + *field_y += K_COULOMB * (oy * axial - moment_y / r3); +} + /* * Field from monopole and dipole sources (SoA). Matches - * electric.measure_electric_field_original, including adding eps_m to - * distance rather than squared distance. Writes V/m into out_x/out_y. + * electric.measure_electric_field_original. Writes V/m into out_x/out_y. */ void measure_electric_field( float measurement_x, @@ -373,31 +415,17 @@ void measure_electric_field( float measurement_my = measurement_y * CM_TO_M; float field_x = 0.0f; float field_y = 0.0f; - for (size_t i = 0; i < num_monopoles; i++) { - float source_mx = mono_x[i] * CM_TO_M; - float source_my = mono_y[i] * CM_TO_M; - float ox = measurement_mx - source_mx; - float oy = measurement_my - source_my; - float distance = vec_length(ox, oy) + eps_m; - float weight = K_COULOMB * mono_q[i] / (distance * distance * distance); - field_x += ox * weight; - field_y += oy * weight; + accumulate_monopole_field( + measurement_mx, measurement_my, + mono_x[i], mono_y[i], mono_q[i], eps_m, &field_x, &field_y + ); } - for (size_t i = 0; i < num_dipoles; i++) { - float source_mx = dip_x[i] * CM_TO_M; - float source_my = dip_y[i] * CM_TO_M; - float ox = measurement_mx - source_mx; - float oy = measurement_my - source_my; - float distance = vec_length(ox, oy) + eps_m; - float r2 = distance * distance; - float r3 = r2 * distance; - float r5 = r3 * r2; - float moment_dot_offset = dip_mx[i] * ox + dip_my[i] * oy; - float axial = 3.0f * moment_dot_offset / r5; - field_x += K_COULOMB * (ox * axial - dip_mx[i] / r3); - field_y += K_COULOMB * (oy * axial - dip_my[i] / r3); + accumulate_dipole_field( + measurement_mx, measurement_my, + dip_x[i], dip_y[i], dip_mx[i], dip_my[i], eps_m, &field_x, &field_y + ); } *out_x = field_x; *out_y = field_y; @@ -472,7 +500,11 @@ static inline void reflect_source_across_wall( } } -// Field from the original sources plus first-order wall images (near walls only). +/* + * Field from sources plus first-order wall images, in one pass: + * find nearby walls, then for each real source add its contribution and + * the contribution of each image charge/dipole. + */ void measure_electric_field_with_reflections( float measurement_x, float measurement_y, @@ -493,13 +525,6 @@ void measure_electric_field_with_reflections( float* out_x, float* out_y ) { - measure_electric_field( - measurement_x, measurement_y, - mono_x, mono_y, mono_q, num_monopoles, - dip_x, dip_y, dip_mx, dip_my, num_dipoles, - eps_m, out_x, out_y - ); - int near_walls[NUM_WALLS]; int num_near_walls = 0; for (int wall = 0; wall < NUM_WALLS; wall++) { @@ -510,10 +535,29 @@ void measure_electric_field_with_reflections( near_walls[num_near_walls++] = wall; } } - if (num_near_walls == 0) { - return; + + float measurement_mx = measurement_x * CM_TO_M; + float measurement_my = measurement_y * CM_TO_M; + float field_x = 0.0f; + float field_y = 0.0f; + + // Real sources first. + for (size_t i = 0; i < num_monopoles; i++) { + accumulate_monopole_field( + measurement_mx, measurement_my, + mono_x[i], mono_y[i], mono_q[i], eps_m, + &field_x, &field_y + ); + } + for (size_t i = 0; i < num_dipoles; i++) { + accumulate_dipole_field( + measurement_mx, measurement_my, + dip_x[i], dip_y[i], dip_mx[i], dip_my[i], eps_m, + &field_x, &field_y + ); } + // First-order images for each nearby wall. for (int w = 0; w < num_near_walls; w++) { int wall = near_walls[w]; for (size_t i = 0; i < num_monopoles; i++) { @@ -525,15 +569,10 @@ void measure_electric_field_with_reflections( arena_size_x, arena_size_y, wall, reflection_scale, flip_on_reflection ); - float cx, cy; - measure_electric_field( - measurement_x, measurement_y, - &ix, &iy, &iq, 1, - NULL, NULL, NULL, NULL, 0, - eps_m, &cx, &cy + accumulate_monopole_field( + measurement_mx, measurement_my, + ix, iy, iq, eps_m, &field_x, &field_y ); - *out_x += cx; - *out_y += cy; } for (size_t i = 0; i < num_dipoles; i++) { float ix = dip_x[i]; @@ -545,17 +584,15 @@ void measure_electric_field_with_reflections( arena_size_x, arena_size_y, wall, reflection_scale, flip_on_reflection ); - float cx, cy; - measure_electric_field( - measurement_x, measurement_y, - NULL, NULL, NULL, 0, - &ix, &iy, &imx, &imy, 1, - eps_m, &cx, &cy + accumulate_dipole_field( + measurement_mx, measurement_my, + ix, iy, imx, imy, eps_m, &field_x, &field_y ); - *out_x += cx; - *out_y += cy; } } + + *out_x = field_x; + *out_y = field_y; } // Receptor geometry and transduction @@ -749,7 +786,7 @@ static int pack_intrinsic_sources( return n; } -/* Pack induced dipoles: all agents, then active food. */ +// Pack induced dipoles: all agents, then active food. static int pack_induced_sources( const FishEnv* env, float* x, float* y, float* mx, float* my ) { @@ -809,32 +846,19 @@ void init(FishEnv* env) { if (env->num_agents > MAX_AGENTS) env->num_agents = MAX_AGENTS; if (env->arena_size_x <= 0.0f) env->arena_size_x = 70.0f; if (env->arena_size_y <= 0.0f) env->arena_size_y = 70.0f; - if (env->min_arena_size_x <= 0.0f) { - env->min_arena_size_x = env->arena_size_x; - } - if (env->min_arena_size_y <= 0.0f) { - env->min_arena_size_y = env->arena_size_y; - } - if (env->max_arena_size_x <= 0.0f) { - env->max_arena_size_x = env->min_arena_size_x; - } - if (env->max_arena_size_y <= 0.0f) { - env->max_arena_size_y = env->min_arena_size_y; - } + if (env->min_arena_size_x <= 0.0f) {env->min_arena_size_x = env->arena_size_x;} + if (env->min_arena_size_y <= 0.0f) {env->min_arena_size_y = env->arena_size_y;} + if (env->max_arena_size_x <= 0.0f) {env->max_arena_size_x = env->min_arena_size_x;} + if (env->max_arena_size_y <= 0.0f) {env->max_arena_size_y = env->min_arena_size_y;} if (env->configured_num_food <= 0) env->configured_num_food = MAX_FOOD; - if (env->configured_num_food > MAX_FOOD) { - env->configured_num_food = MAX_FOOD; - } + if (env->configured_num_food > MAX_FOOD) {env->configured_num_food = MAX_FOOD;} if (env->patch_radius_cm <= 0.0f) env->patch_radius_cm = 6.0f; if (env->patch_radius_std_cm < 0.0f) env->patch_radius_std_cm = 1.5f; if (env->patch_density <= 0.0f) env->patch_density = 0.001f; - if (env->food_distribution < FOOD_UNIFORM || - env->food_distribution > FOOD_RANDOM) { + if (env->food_distribution < FOOD_UNIFORM || env->food_distribution > FOOD_RANDOM) { env->food_distribution = FOOD_UNIFORM; } - if (env->electric_field_radius_cm <= 0.0f) { - env->electric_field_radius_cm = 15.0f; - } + if (env->electric_field_radius_cm <= 0.0f) {env->electric_field_radius_cm = 15.0f;} if (env->episode_length <= 0) env->episode_length = 4096; if (env->rng == 0) env->rng = 1; } @@ -917,20 +941,14 @@ void compute_observations(FishEnv* env) { env->arena_size_x, env->arena_size_y, FIELD_EPS_M, REFLECTION_SCALE, false, &fx, &fy ); - float reading = - project_field(fx, fy, snx, sny) - - env->amp_intrinsic_baseline[sensor_idx]; + float reading = project_field(fx, fy, snx, sny) - env->amp_intrinsic_baseline[sensor_idx]; reading *= random_multiplier(env, cons_eod ? 0.5f : 0.05f); - obs[obs_idx++] = normalize_sensor_reading( - reading, AMPULLARY_MIN_VM, - AMPULLARY_MAX_VM, SENSOR_EPS + obs[obs_idx++] = normalize_sensor_reading(reading, AMPULLARY_MIN_VM, AMPULLARY_MAX_VM, SENSOR_EPS ); } // Knollenorgans: one directional 12-receptor block per conspecific. - int metadata_start = - NUM_MORMYROMASTS + NUM_AMPULLARY + - NUM_KNOLLEN * (MAX_AGENTS - 1); + int metadata_start = NUM_MORMYROMASTS + NUM_AMPULLARY + NUM_KNOLLEN * (MAX_AGENTS - 1); int cons_slot = 0; for (int other = 0; other < MAX_AGENTS; other++) { if (other == i) continue; @@ -991,17 +1009,13 @@ void compute_observations(FishEnv* env) { for (int action_idx = 0; action_idx < ACTION_SIZE; action_idx++) { obs[obs_idx++] = agent->last_action[action_idx]; } - obs[obs_idx++] = 0.0f; /* fatigue, retained for upstream layout */ + obs[obs_idx++] = 0.0f; obs[obs_idx++] = agent->was_bitten ? 1.0f : 0.0f; obs[obs_idx++] = agent->size; - obs[obs_idx++] = - (float)agent->bite_cooldown / (float)BITE_COOLDOWN_STEPS; - obs[obs_idx++] = clamp( - agent->disp_ego_x / agent->max_linear_velocity, -1.0f, 1.0f); - obs[obs_idx++] = clamp( - agent->disp_ego_y / agent->max_linear_velocity, -1.0f, 1.0f); - obs[obs_idx++] = - (float)agent->eat_cooldown / (float)EAT_COOLDOWN_STEPS; + obs[obs_idx++] = (float)agent->bite_cooldown / (float)BITE_COOLDOWN_STEPS; + obs[obs_idx++] = clamp(agent->disp_ego_x / agent->max_linear_velocity, -1.0f, 1.0f); + obs[obs_idx++] = clamp(agent->disp_ego_y / agent->max_linear_velocity, -1.0f, 1.0f); + obs[obs_idx++] = (float)agent->eat_cooldown / (float)EAT_COOLDOWN_STEPS; } } From 9fb7ae4e095006e5acbdfde861c70bcb69fbc437 Mon Sep 17 00:00:00 2001 From: daphne-cornelisse Date: Tue, 4 Aug 2026 11:30:19 -0400 Subject: [PATCH 20/20] Make electric field range approximations configurable. --- config/wef.ini | 14 +++- ocean/wef/binding.c | 3 + ocean/wef/wef.c | 125 ++-------------------------- ocean/wef/wef.h | 196 ++++++++++++++++++++++++++++++++------------ 4 files changed, 163 insertions(+), 175 deletions(-) diff --git a/config/wef.ini b/config/wef.ini index 1a16625e28..3a07b4af90 100644 --- a/config/wef.ini +++ b/config/wef.ini @@ -3,15 +3,15 @@ env_name = wef [vec] total_agents = 4096 -num_buffers = 8 -num_threads = 8 +num_buffers = 16 +num_threads = 16 [policy] num_layers = 1 hidden_size = 128 [train] -total_timesteps = 50_000_000 +total_timesteps = 200_000_000 [env] num_agents = 4 @@ -28,7 +28,13 @@ patch_radius = 6 patch_radius_std = 1.5 patch_density = 0.001 electric_field_radius = 15 -episode_length = 4096 +# Approximate influence ranges (cm) for electric field calculations. +# Reducing these speeds up sensing but may reduce accuracy. +# Set to 0 to default to the largest arena side in init(). +reflection_wall_range = 70 +field_fish_range = 70 +field_food_range = 70 +episode_length = 512 [sweep] diff --git a/ocean/wef/binding.c b/ocean/wef/binding.c index d8340e19dd..ac7ff14e6c 100644 --- a/ocean/wef/binding.c +++ b/ocean/wef/binding.c @@ -21,6 +21,9 @@ void my_init(Env* env, Dict* kwargs) { env->patch_radius_std_cm = dict_get(kwargs, "patch_radius_std")->value; env->patch_density = dict_get(kwargs, "patch_density")->value; env->electric_field_radius_cm = dict_get(kwargs, "electric_field_radius")->value; + env->reflection_wall_range_cm = dict_get(kwargs, "reflection_wall_range")->value; + env->field_fish_range_cm = dict_get(kwargs, "field_fish_range")->value; + env->field_food_range_cm = dict_get(kwargs, "field_food_range")->value; env->episode_length = (int)dict_get(kwargs, "episode_length")->value; init(env); } diff --git a/ocean/wef/wef.c b/ocean/wef/wef.c index b04c6837b4..3df0bcbed6 100644 --- a/ocean/wef/wef.c +++ b/ocean/wef/wef.c @@ -8,117 +8,13 @@ */ #include -#include #include "wef.h" static float random_action(unsigned int* rng) { return 2.0f * (float)rand_r(rng) / (float)RAND_MAX - 1.0f; } -static void print_physics_fixture(FishEnv* env) { - env->num_agents = 2; - env->num_food = 1; - env->agents[0].pos_x = 20.0f; - env->agents[0].pos_y = 20.0f; - env->agents[0].orientation = 0.25f; - env->agents[0].emits_eod = true; - env->agents[1].pos_x = 45.0f; - env->agents[1].pos_y = 40.0f; - env->agents[1].orientation = -1.0f; - env->agents[1].emits_eod = false; - env->food[0].pos_x = 30.0f; - env->food[0].pos_y = 25.0f; - env->food[0].orientation = 0.7f; - env->food[0].active = true; - calibrate_electroreceptors(env); - build_electric_scene(env); - - float mono_x[4], mono_y[4], mono_q[4]; - float dip_x[MAX_AGENTS + MAX_FOOD]; - float dip_y[MAX_AGENTS + MAX_FOOD]; - float dip_mx[MAX_AGENTS + MAX_FOOD]; - float dip_my[MAX_AGENTS + MAX_FOOD]; - int n_mono = 0; - for (int i = 0; i < env->num_agents; i++) { - for (int p = 0; p < 2; p++) { - mono_x[n_mono] = env->agents[i].eod_pos_x[p]; - mono_y[n_mono] = env->agents[i].eod_pos_y[p]; - mono_q[n_mono] = env->agents[i].eod_charge[p]; - n_mono++; - } - } - int n_intr = 0; - for (int i = 0; i < env->num_agents; i++) { - dip_x[n_intr] = env->agents[i].pos_x; - dip_y[n_intr] = env->agents[i].pos_y; - dip_mx[n_intr] = env->agents[i].intrinsic_moment_x; - dip_my[n_intr] = env->agents[i].intrinsic_moment_y; - n_intr++; - } - if (env->food[0].active) { - dip_x[n_intr] = env->food[0].pos_x; - dip_y[n_intr] = env->food[0].pos_y; - dip_mx[n_intr] = env->food[0].intrinsic_moment_x; - dip_my[n_intr] = env->food[0].intrinsic_moment_y; - n_intr++; - } - int n_ind = 0; - float ind_x[MAX_AGENTS + MAX_FOOD]; - float ind_y[MAX_AGENTS + MAX_FOOD]; - float ind_mx[MAX_AGENTS + MAX_FOOD]; - float ind_my[MAX_AGENTS + MAX_FOOD]; - for (int i = 0; i < env->num_agents; i++) { - ind_x[n_ind] = env->agents[i].pos_x; - ind_y[n_ind] = env->agents[i].pos_y; - ind_mx[n_ind] = env->agents[i].induced_moment_x; - ind_my[n_ind] = env->agents[i].induced_moment_y; - n_ind++; - } - if (env->food[0].active) { - ind_x[n_ind] = env->food[0].pos_x; - ind_y[n_ind] = env->food[0].pos_y; - ind_mx[n_ind] = env->food[0].induced_moment_x; - ind_my[n_ind] = env->food[0].induced_moment_y; - n_ind++; - } - - float eod_x, eod_y, intrinsic_x, intrinsic_y, induced_x, induced_y; - measure_electric_field_with_reflections( - 35.0f, 30.0f, - mono_x, mono_y, mono_q, (size_t)n_mono, - NULL, NULL, NULL, NULL, 0, - env->arena_size_x, env->arena_size_y, FIELD_EPS_M, - REFLECTION_SCALE, false, &eod_x, &eod_y - ); - measure_electric_field_with_reflections( - 35.0f, 30.0f, - NULL, NULL, NULL, 0, - dip_x, dip_y, dip_mx, dip_my, (size_t)n_intr, - env->arena_size_x, env->arena_size_y, FIELD_EPS_M, - REFLECTION_SCALE, false, &intrinsic_x, &intrinsic_y - ); - measure_electric_field_with_reflections( - 35.0f, 30.0f, - NULL, NULL, NULL, 0, - ind_x, ind_y, ind_mx, ind_my, (size_t)n_ind, - env->arena_size_x, env->arena_size_y, FIELD_EPS_M, - REFLECTION_SCALE, false, &induced_x, &induced_y - ); - printf( - "{\"eod\":[%.17g,%.17g],\"intrinsic\":[%.17g,%.17g]," - "\"induced\":[%.17g,%.17g],\"induced_fish\":[%.17g,%.17g]," - "\"induced_food\":[%.17g,%.17g],\"morm_cd0\":%.17g," - "\"amp_baseline0\":%.17g}\n", - eod_x, eod_y, intrinsic_x, intrinsic_y, induced_x, induced_y, - env->agents[1].induced_moment_x, - env->agents[1].induced_moment_y, - env->food[0].induced_moment_x, - env->food[0].induced_moment_y, - env->mormyromast_cd[0], env->amp_intrinsic_baseline[0] - ); -} - -int main(int argc, char** argv) { +int main(void) { FishEnv env = { .num_agents = 4, .arena_size_x = 70.0f, @@ -130,19 +26,12 @@ int main(int argc, char** argv) { c_allocate(&env); c_reset(&env); - if (argc > 1 && strcmp(argv[1], "--physics-fixture") == 0) { - print_physics_fixture(&env); - free_allocated(&env); - return 0; - } - unsigned int demo_rng = env.rng ^ 0x9e3779b9U; float target_actions[MAX_AGENTS][ACTION_SIZE] = {{0}}; - bool headless = argc > 1 && strcmp(argv[1], "--headless") == 0; - if (!headless) c_render(&env); + c_render(&env); - while (headless ? env.tick < 1000 : !WindowShouldClose()) { + while (!WindowShouldClose()) { if (env.tick % 45 == 0) { for (int i = 0; i < env.num_agents; i++) { target_actions[i][0] = random_action(&demo_rng); @@ -154,7 +43,7 @@ int main(int argc, char** argv) { } } - /* Smooth random walk commands; EOD remains a discrete pulse action. */ + // Take random actions for (int i = 0; i < env.num_agents; i++) { float* action = env.actions + i * ACTION_SIZE; action[0] += 0.06f * (target_actions[i][0] - action[0]); @@ -164,13 +53,9 @@ int main(int argc, char** argv) { } c_step(&env); - if (!headless) c_render(&env); + c_render(&env); } - if (headless) { - printf("wef headless smoke test: 1000 steps, %d food eaten\n", - env.food_eaten); - } free_allocated(&env); return 0; } diff --git a/ocean/wef/wef.h b/ocean/wef/wef.h index 23c27ce248..900ff2dc67 100644 --- a/ocean/wef/wef.h +++ b/ocean/wef/wef.h @@ -67,13 +67,6 @@ #define MORMYROMAST_MAX_VM 5e-2f #define KNOLLEN_MIN_VM 2e-7f -// Approximate influence range for first-order wall images (cm) for electric field -// calculations. Reducing this will speed up the simulation but may reduce accuracy -// near walls. Override at compile time: -DREFLECTION_WALL_RANGE_CM=30.0f -#ifndef REFLECTION_WALL_RANGE_CM -#define REFLECTION_WALL_RANGE_CM 100.0f -#endif - #define MOTION_FIRST_ORDER 1 #define MOTION_SECOND_ORDER 2 @@ -346,19 +339,27 @@ bool point_in_forward_cone( // Electrostatic field model /* - * Accumulate field from one monopole (Coulomb). measurement_* in meters; - * source positions in cm. eps_m added to distance (matches upstream). + * Accumulate field from one monopole (Coulomb). measurement_m* in meters; + * positions in cm for range check. Skips if beyond range_cm. */ static inline void accumulate_monopole_field( float measurement_mx, float measurement_my, + float measurement_x_cm, + float measurement_y_cm, float source_x_cm, float source_y_cm, float charge_c, + float range_cm, float eps_m, float* field_x, float* field_y ) { + float dx = measurement_x_cm - source_x_cm; + float dy = measurement_y_cm - source_y_cm; + if (dx * dx + dy * dy > range_cm * range_cm) { + return; + } float ox = measurement_mx - source_x_cm * CM_TO_M; float oy = measurement_my - source_y_cm * CM_TO_M; float distance = vec_length(ox, oy) + eps_m; @@ -367,18 +368,26 @@ static inline void accumulate_monopole_field( *field_y += oy * weight; } -/* Accumulate field from one dipole (Coulomb). */ +/* Accumulate field from one dipole (Coulomb). Skips if beyond range_cm. */ static inline void accumulate_dipole_field( float measurement_mx, float measurement_my, + float measurement_x_cm, + float measurement_y_cm, float source_x_cm, float source_y_cm, float moment_x, float moment_y, + float range_cm, float eps_m, float* field_x, float* field_y ) { + float dx = measurement_x_cm - source_x_cm; + float dy = measurement_y_cm - source_y_cm; + if (dx * dx + dy * dy > range_cm * range_cm) { + return; + } float ox = measurement_mx - source_x_cm * CM_TO_M; float oy = measurement_my - source_y_cm * CM_TO_M; float distance = vec_length(ox, oy) + eps_m; @@ -394,6 +403,10 @@ static inline void accumulate_dipole_field( /* * Field from monopole and dipole sources (SoA). Matches * electric.measure_electric_field_original. Writes V/m into out_x/out_y. + * + * Dipole arrays are packed agents-first then food: the first num_agent_dipoles + * entries use fish_range_cm; the rest use food_range_cm. + * Monopoles (EODs) always use fish_range_cm. */ void measure_electric_field( float measurement_x, @@ -407,6 +420,9 @@ void measure_electric_field( const float* dip_mx, const float* dip_my, size_t num_dipoles, + size_t num_agent_dipoles, + float fish_range_cm, + float food_range_cm, float eps_m, float* out_x, float* out_y @@ -418,13 +434,19 @@ void measure_electric_field( for (size_t i = 0; i < num_monopoles; i++) { accumulate_monopole_field( measurement_mx, measurement_my, - mono_x[i], mono_y[i], mono_q[i], eps_m, &field_x, &field_y + measurement_x, measurement_y, + mono_x[i], mono_y[i], mono_q[i], + fish_range_cm, eps_m, &field_x, &field_y ); } for (size_t i = 0; i < num_dipoles; i++) { + float range_cm = + (i < num_agent_dipoles) ? fish_range_cm : food_range_cm; accumulate_dipole_field( measurement_mx, measurement_my, - dip_x[i], dip_y[i], dip_mx[i], dip_my[i], eps_m, &field_x, &field_y + measurement_x, measurement_y, + dip_x[i], dip_y[i], dip_mx[i], dip_my[i], + range_cm, eps_m, &field_x, &field_y ); } *out_x = field_x; @@ -502,8 +524,10 @@ static inline void reflect_source_across_wall( /* * Field from sources plus first-order wall images, in one pass: - * find nearby walls, then for each real source add its contribution and - * the contribution of each image charge/dipole. + * find nearby walls, then for each real source (within fish/food range) + * add its contribution and image charges/dipoles. + * + * Dipole arrays are agents-first then food (see measure_electric_field). */ void measure_electric_field_with_reflections( float measurement_x, @@ -517,8 +541,12 @@ void measure_electric_field_with_reflections( const float* dip_mx, const float* dip_my, size_t num_dipoles, + size_t num_agent_dipoles, float arena_size_x, float arena_size_y, + float wall_range_cm, + float fish_range_cm, + float food_range_cm, float eps_m, float reflection_scale, bool flip_on_reflection, @@ -531,7 +559,7 @@ void measure_electric_field_with_reflections( float dist = distance_to_wall_cm( measurement_x, measurement_y, arena_size_x, arena_size_y, wall ); - if (dist <= REFLECTION_WALL_RANGE_CM) { + if (dist <= wall_range_cm) { near_walls[num_near_walls++] = wall; } } @@ -541,26 +569,35 @@ void measure_electric_field_with_reflections( float field_x = 0.0f; float field_y = 0.0f; - // Real sources first. + // Real sources first (range-gated). for (size_t i = 0; i < num_monopoles; i++) { accumulate_monopole_field( measurement_mx, measurement_my, - mono_x[i], mono_y[i], mono_q[i], eps_m, - &field_x, &field_y + measurement_x, measurement_y, + mono_x[i], mono_y[i], mono_q[i], + fish_range_cm, eps_m, &field_x, &field_y ); } for (size_t i = 0; i < num_dipoles; i++) { + float range_cm = + (i < num_agent_dipoles) ? fish_range_cm : food_range_cm; accumulate_dipole_field( measurement_mx, measurement_my, - dip_x[i], dip_y[i], dip_mx[i], dip_my[i], eps_m, - &field_x, &field_y + measurement_x, measurement_y, + dip_x[i], dip_y[i], dip_mx[i], dip_my[i], + range_cm, eps_m, &field_x, &field_y ); } - // First-order images for each nearby wall. + // First-order images for each nearby wall (same range gate on real pos). for (int w = 0; w < num_near_walls; w++) { int wall = near_walls[w]; for (size_t i = 0; i < num_monopoles; i++) { + float dx = measurement_x - mono_x[i]; + float dy = measurement_y - mono_y[i]; + if (dx * dx + dy * dy > fish_range_cm * fish_range_cm) { + continue; + } float ix = mono_x[i]; float iy = mono_y[i]; float iq = mono_q[i]; @@ -569,12 +606,21 @@ void measure_electric_field_with_reflections( arena_size_x, arena_size_y, wall, reflection_scale, flip_on_reflection ); + /* Image uses infinite range: real source already range-gated. */ accumulate_monopole_field( measurement_mx, measurement_my, - ix, iy, iq, eps_m, &field_x, &field_y + measurement_x, measurement_y, + ix, iy, iq, + 1.0e20f, eps_m, &field_x, &field_y ); } for (size_t i = 0; i < num_dipoles; i++) { + float range_cm = (i < num_agent_dipoles) ? fish_range_cm : food_range_cm; + float dx = measurement_x - dip_x[i]; + float dy = measurement_y - dip_y[i]; + if (dx * dx + dy * dy > range_cm * range_cm) { + continue; + } float ix = dip_x[i]; float iy = dip_y[i]; float imx = dip_mx[i]; @@ -586,7 +632,9 @@ void measure_electric_field_with_reflections( ); accumulate_dipole_field( measurement_mx, measurement_my, - ix, iy, imx, imy, eps_m, &field_x, &field_y + measurement_x, measurement_y, + ix, iy, imx, imy, + 1.0e20f, eps_m, &field_x, &field_y ); } } @@ -720,6 +768,9 @@ typedef struct FishEnv { float max_arena_size_x; float max_arena_size_y; float electric_field_radius_cm; + float reflection_wall_range_cm; + float field_fish_range_cm; + float field_food_range_cm; FoodDistribution food_distribution; int configured_num_food; float patch_radius_cm; @@ -859,6 +910,14 @@ void init(FishEnv* env) { env->food_distribution = FOOD_UNIFORM; } if (env->electric_field_radius_cm <= 0.0f) {env->electric_field_radius_cm = 15.0f;} + // Unset ranges default to the largest arena side so the full tank is covered. + float arena_range_cm = fmaxf( + fmaxf(env->arena_size_x, env->arena_size_y), + fmaxf(env->max_arena_size_x, env->max_arena_size_y) + ); + if (env->reflection_wall_range_cm <= 0.0f) env->reflection_wall_range_cm = arena_range_cm; + if (env->field_fish_range_cm <= 0.0f) env->field_fish_range_cm = arena_range_cm; + if (env->field_food_range_cm <= 0.0f) env->field_food_range_cm = arena_range_cm; if (env->episode_length <= 0) env->episode_length = 4096; if (env->rng == 0) env->rng = 1; } @@ -910,8 +969,12 @@ void compute_observations(FishEnv* env) { sx, sy, NULL, NULL, NULL, 0, ind_x, ind_y, ind_mx, ind_my, (size_t)n_induced, - env->arena_size_x, env->arena_size_y, FIELD_EPS_M, - REFLECTION_SCALE, false, &fx, &fy + (size_t)env->num_agents, + env->arena_size_x, env->arena_size_y, + env->reflection_wall_range_cm, + env->field_fish_range_cm, + env->field_food_range_cm, + FIELD_EPS_M, REFLECTION_SCALE, false, &fx, &fy ); float reading = project_field(fx, fy, snx, sny); if (!agent->emits_eod) { @@ -938,8 +1001,12 @@ void compute_observations(FishEnv* env) { sx, sy, NULL, NULL, NULL, 0, int_x, int_y, int_mx, int_my, (size_t)n_intrinsic, - env->arena_size_x, env->arena_size_y, FIELD_EPS_M, - REFLECTION_SCALE, false, &fx, &fy + (size_t)env->num_agents, + env->arena_size_x, env->arena_size_y, + env->reflection_wall_range_cm, + env->field_fish_range_cm, + env->field_food_range_cm, + FIELD_EPS_M, REFLECTION_SCALE, false, &fx, &fy ); float reading = project_field(fx, fy, snx, sny) - env->amp_intrinsic_baseline[sensor_idx]; reading *= random_multiplier(env, cons_eod ? 0.5f : 0.05f); @@ -972,7 +1039,9 @@ void compute_observations(FishEnv* env) { env->agents[other].eod_pos_y, env->agents[other].eod_charge, 2, - NULL, NULL, NULL, NULL, 0, + NULL, NULL, NULL, NULL, 0, 0, + env->field_fish_range_cm, + env->field_food_range_cm, FIELD_EPS_M, &fx, &fy ); float raw_knollen = project_field(fx, fy, snx, sny); @@ -1059,9 +1128,12 @@ void calibrate_electroreceptors(FishEnv* env) { measure_electric_field_with_reflections( sx, sy, eod_x, eod_y, eod_q, 2, - NULL, NULL, NULL, NULL, 0, - env->arena_size_x, env->arena_size_y, FIELD_EPS_M, - REFLECTION_SCALE, false, &fx, &fy + NULL, NULL, NULL, NULL, 0, 0, + env->arena_size_x, env->arena_size_y, + env->reflection_wall_range_cm, + env->field_fish_range_cm, + env->field_food_range_cm, + FIELD_EPS_M, REFLECTION_SCALE, false, &fx, &fy ); env->mormyromast_cd[i] = project_field(fx, fy, nx, ny); } @@ -1076,9 +1148,12 @@ void calibrate_electroreceptors(FishEnv* env) { measure_electric_field_with_reflections( sx, sy, NULL, NULL, NULL, 0, - dip_x, dip_y, dip_mx, dip_my, 1, - env->arena_size_x, env->arena_size_y, FIELD_EPS_M, - REFLECTION_SCALE, false, &fx, &fy + dip_x, dip_y, dip_mx, dip_my, 1, 1, + env->arena_size_x, env->arena_size_y, + env->reflection_wall_range_cm, + env->field_fish_range_cm, + env->field_food_range_cm, + FIELD_EPS_M, REFLECTION_SCALE, false, &fx, &fy ); env->amp_intrinsic_baseline[i] = project_field(fx, fy, nx, ny); } @@ -1135,7 +1210,9 @@ void build_electric_scene(FishEnv* env) { measure_electric_field( agent->pos_x, agent->pos_y, eod_x, eod_y, eod_q, (size_t)n_eod, - NULL, NULL, NULL, NULL, 0, + NULL, NULL, NULL, NULL, 0, 0, + env->field_fish_range_cm, + env->field_food_range_cm, FIELD_EPS_M, &fx, &fy ); induce_dipole_moment( @@ -1163,7 +1240,9 @@ void build_electric_scene(FishEnv* env) { measure_electric_field( env->food[i].pos_x, env->food[i].pos_y, eod_x, eod_y, eod_q, (size_t)n_eod, - NULL, NULL, NULL, NULL, 0, + NULL, NULL, NULL, NULL, 0, 0, + env->field_fish_range_cm, + env->field_food_range_cm, FIELD_EPS_M, &fx, &fy ); induce_dipole_moment( @@ -1454,16 +1533,17 @@ void render_field(FishEnv* env) { float mono_x[2 * MAX_AGENTS]; float mono_y[2 * MAX_AGENTS]; float mono_q[2 * MAX_AGENTS]; - float dip_x[MAX_DIPOLE_SOURCES]; - float dip_y[MAX_DIPOLE_SOURCES]; - float dip_mx[MAX_DIPOLE_SOURCES]; - float dip_my[MAX_DIPOLE_SOURCES]; + float ind_x[MAX_AGENTS + MAX_FOOD]; + float ind_y[MAX_AGENTS + MAX_FOOD]; + float ind_mx[MAX_AGENTS + MAX_FOOD]; + float ind_my[MAX_AGENTS + MAX_FOOD]; + float int_x[MAX_AGENTS + MAX_FOOD]; + float int_y[MAX_AGENTS + MAX_FOOD]; + float int_mx[MAX_AGENTS + MAX_FOOD]; + float int_my[MAX_AGENTS + MAX_FOOD]; int n_mono = pack_eod_sources(env, mono_x, mono_y, mono_q); - int n_intr = pack_intrinsic_sources(env, dip_x, dip_y, dip_mx, dip_my); - int n_ind = pack_induced_sources( - env, dip_x + n_intr, dip_y + n_intr, dip_mx + n_intr, dip_my + n_intr - ); - int n_dip = n_intr + n_ind; + int n_ind = pack_induced_sources(env, ind_x, ind_y, ind_mx, ind_my); + int n_intr = pack_intrinsic_sources(env, int_x, int_y, int_mx, int_my); const int columns = 25; const int rows = 25; @@ -1484,17 +1564,31 @@ void render_field(FishEnv* env) { } if (!near_fish) continue; - float fx, fy; + float fx1, fy1, fx2, fy2; measure_electric_field_with_reflections( pos_x, pos_y, mono_x, mono_y, mono_q, (size_t)n_mono, - dip_x, dip_y, dip_mx, dip_my, (size_t)n_dip, + ind_x, ind_y, ind_mx, ind_my, (size_t)n_ind, + (size_t)env->num_agents, + env->arena_size_x, env->arena_size_y, + env->reflection_wall_range_cm, + env->field_fish_range_cm, + env->field_food_range_cm, + FIELD_EPS_M, REFLECTION_SCALE, false, &fx1, &fy1 + ); + measure_electric_field_with_reflections( + pos_x, pos_y, + NULL, NULL, NULL, 0, + int_x, int_y, int_mx, int_my, (size_t)n_intr, + (size_t)env->num_agents, env->arena_size_x, env->arena_size_y, - FIELD_EPS_M, - REFLECTION_SCALE, - false, - &fx, &fy + env->reflection_wall_range_cm, + env->field_fish_range_cm, + env->field_food_range_cm, + FIELD_EPS_M, REFLECTION_SCALE, false, &fx2, &fy2 ); + float fx = fx1 + fx2; + float fy = fy1 + fy2; float strength = vec_length(fx, fy); if (strength <= 0.0f) continue; float log_strength = log10f(strength);

    c2pd?hLtl@ha0A~B|kMWw{FL&AsC!SE&gBz$ag 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