Files
Guido.Tech/hpcsim/__pycache__/enrichment.cpython-313.pyc

119 lines
12 KiB
Plaintext
Raw Normal View History

2025-10-18 23:56:53 -05:00
<EFBFBD>
W<><57>h2<00><01><><00>SSKJr SSKJrJr SSKJrJrJrJ r SSK
r SSSSS S
.r S r \"S S 55r"SS5rg)<10>)<01> annotations)<02> dataclass<73>field)<04>Dict<63>Any<6E>Optional<61>ListNg<4E><1E><>Q<EFBFBD><51>?<3F>{<14>G<EFBFBD>z<EFBFBD>?g<><1E><>Q<EFBFBD><51>?g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?g<>I +<2B><>?<3F><05>soft<66>medium<75>hard<72>inter<65>wet<65>c<01><><00>\rSrSr%Sr\"\S9rS\S'\"\S9r S\S'\"\S9r
S\S'\"\S9r S\S 'S
r S \S 'S r S\S'SrS \S'SrS \S'SrS\S'Srg)<18> EnricherState<74>%z4Maintains race state across laps for trend analysis.)<01>default_factoryz List[float]<5D> lap_times<65>
lap_speeds<EFBFBD> List[int]<5D> positions<6E> gaps_to_aheadr<00>int<6E>current_tire_ager <00>str<74>current_tire_compound<6E><00>tire_stint_start_lap<61>3<00>
total_laps<EFBFBD>Monza<7A>
track_name<EFBFBD>N)<12>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__doc__r<00>listr<00>__annotations__rrrrrr r"r$<00>__static_attributes__r%<00><00>6/Users/adipu/Documents/HPCSimSite/hpcsim/enrichment.pyrr%sv<00><00>><3E>"<22>4<EFBFBD>8<>I<EFBFBD>{<7B>8<>#<23>D<EFBFBD>9<>J<EFBFBD> <0B>9<> <20><14>6<>I<EFBFBD>y<EFBFBD>6<>!&<26>t<EFBFBD>!<<3C>M<EFBFBD>;<3B><<3C><1D><14>c<EFBFBD><1D>!)<29><19>3<EFBFBD>)<29> !<21><18>#<23>!<21><18>J<EFBFBD><03><18><1D>J<EFBFBD><03>r.rc<01><><00>\rSrSrSrSrSSjrSSjrSSjrSSjr SSjr
SS jr SS
jr SS jr SS jrSS jrSrg)<19>Enricherr!z<>
HPC-simulated enrichment for lap-level F1 telemetry.
2025-10-18 23:56:53 -05:00
Accepts lap-level data from Raspberry Pi and generates performance insights
that simulate HPC computational analysis.
c<01>0<00>[5UlSUlg)N)r<00>state<74>_baseline_lap_time)<01>selfs r/<00>__init__<5F>Enricher.__init__;s<00><00>"<22>_<EFBFBD><04>
<EFBFBD>37<EFBFBD><04>r.c
<01><><00>[URSS55n[URSS55n[URSS55n[URSS55n[URS S55nURS
5n[URS S55n[URS S55n [URS S55R 5n
[URSS55n [URSS55n [ URSS55n UR U5nURRRU5 URRRU5 URRRU5 URRRU5 X<>Rl X<>RlX0Rl[!URR5S:<3A>a<>URRSSURlURRSSURl
URRSSURl URRSSURl UR"bX<>R":aX<>lUR%X<>U 5nUR'5nUR)X<>5nUR+X#X<>5nUR-U5nUR/XF5nUR15nU[3US5U[3US5U[3US5[3US5US.nURR4UUU (aSOSU S.SUU
U UR7X#5UUS.S.nUUS.$) zd
Main enrichment method for lap-level data.
Returns enriched telemetry + race context for AI layer.
<EFBFBD>
lap_numberrr"r!<00>position<6F>
<00> gap_to_leader<65><00> gap_to_ahead<61>lap_time<6D> average_speed<65> max_speed<65> tire_compound<6E>MEDIUM<55>tire_life_laps<70>track_temperatureg9@<40>rainfallFi<46><69><EFBFBD><EFBFBD>N<EFBFBD><00>)<08>lap<61>tire_degradation_rate<74>
pace_trend<EFBFBD>tire_cliff_risk<73>optimal_pit_window<6F>performance_delta<74>competitive_pressure<72>position_trend<6E>Wet<65>Dry)r$r"<00> current_lap<61>weather_condition<6F>track_temp_celsius<75>Alonso)<07> driver_name<6D>current_positionr<00> tire_age_laps<70>fuel_remaining_percentr<r>)<02> race_info<66> driver_state)<02>enriched_telemetry<72> race_context)r<00>get<65>floatr<00>lower<65>bool<6F>_parse_lap_timer3r<00>appendrrrrrr"<00>lenr4<00>_compute_tire_degradation_rate<74>_compute_pace_trend<6E>_compute_tire_cliff_risk<73>_compute_optimal_pit_window<6F>_compute_performance_delta<74>_compute_competitive_pressure<72>_compute_position_trend<6E>roundr$<00>_estimate_fuel)r5<00>lap_datar9r"r:r<r><00> lap_time_strr@rArBrDrErF<00>lap_time_seconds<64> tire_deg_raterKrL<00>
pit_windowrNrOrPr]r^s r/<00>enrich_lap_data<74>Enricher.enrich_lap_data?s`<00><00> <19><18><1C><1C>l<EFBFBD>A<EFBFBD>6<>7<>
<EFBFBD><18><18><1C><1C>l<EFBFBD>B<EFBFBD>7<>8<>
<EFBFBD><16>x<EFBFBD>|<7C>|<7C>J<EFBFBD><02>3<>4<><08><1D>h<EFBFBD>l<EFBFBD>l<EFBFBD>?<3F>C<EFBFBD>@<40>A<> <0A><1C>X<EFBFBD>\<5C>\<5C>.<2E>#<23>><3E>?<3F> <0C><1F>|<7C>|<7C>J<EFBFBD>/<2F> <0C><1D>h<EFBFBD>l<EFBFBD>l<EFBFBD>?<3F>C<EFBFBD>@<40>A<> <0A><19>(<28>,<2C>,<2C>{<7B>C<EFBFBD>8<>9<> <09><1B>H<EFBFBD>L<EFBFBD>L<EFBFBD><1F>(<28>C<>D<>J<>J<>L<> <0A><1C>X<EFBFBD>\<5C>\<5C>*:<3A>A<EFBFBD>><3E>?<3F><0E>!<21>(<28>,<2C>,<2C>/B<>D<EFBFBD>"I<>J<><19><17><08> <0C> <0C>Z<EFBFBD><15>7<>8<><08> <20>/<2F>/<2F> <0C>=<3D><18> <0A>
2025-10-18 23:56:53 -05:00
<EFBFBD>
<EFBFBD><1C><1C>#<23>#<23>$4<>5<> <0C>
2025-10-18 23:56:53 -05:00
<EFBFBD>
<EFBFBD><1D><1D>$<24>$<24>]<5D>3<> <0C>
<EFBFBD>
<EFBFBD><1C><1C>#<23>#<23>H<EFBFBD>-<2D> <0C>
<EFBFBD>
<EFBFBD> <20> <20>'<27>'<27> <0C>5<>&4<>
2025-10-18 23:56:53 -05:00
<EFBFBD>
<EFBFBD>#<23>+8<>
2025-10-18 23:56:53 -05:00
<EFBFBD>
<EFBFBD>(<28> *<2A>
<EFBFBD>
<EFBFBD><1D> <0F>t<EFBFBD>z<EFBFBD>z<EFBFBD>#<23>#<23> $<24>r<EFBFBD> )<29>#'<27>:<3A>:<3A>#7<>#7<><03><04>#=<3D>D<EFBFBD>J<EFBFBD>J<EFBFBD> <20>$(<28>J<EFBFBD>J<EFBFBD>$9<>$9<>#<23>$<24>$?<3F>D<EFBFBD>J<EFBFBD>J<EFBFBD> !<21>#'<27>:<3A>:<3A>#7<>#7<><03><04>#=<3D>D<EFBFBD>J<EFBFBD>J<EFBFBD> <20>'+<2B>z<EFBFBD>z<EFBFBD>'?<3F>'?<3F><03><04>'E<>D<EFBFBD>J<EFBFBD>J<EFBFBD> $<24> <10> "<22> "<22> *<2A>.><3E>AX<41>AX<41>.X<>&6<> #<23><1D>;<3B>;<3B>M<EFBFBD>[l<>m<> <0A><19>-<2D>-<2D>/<2F>
<EFBFBD><1E>7<>7<> <0A>V<><0F><19>5<>5<>j<EFBFBD>n<EFBFBD>l<>
<EFBFBD> <20>;<3B>;<3B><L<>M<><19>#<23>A<>A<>(<28>Y<><1C><1D>5<>5<>7<><0E><1E>%*<2A>=<3D>!<21>%<<3C>$<24>$<24>_<EFBFBD>a<EFBFBD>8<>",<2C>!&<26>'8<>!<21>!<<3C>$)<29>*><3E><01>$B<>,<2C> 
<EFBFBD><1A>#<23>j<EFBFBD>j<EFBFBD>3<>3<>(<28>)<29>.6<EFBFBD>U<EFBFBD>E<EFBFBD>&7<> <0E> (<28>$,<2C>)6<>!/<2F>*.<2E>*=<3D>*=<3D>j<EFBFBD>*U<>!.<2E> ,<2C><0E>
<EFBFBD> <0C>(#5<>(<28>
<EFBFBD>
r.c<01><><00>[RUS5nSnUS:<3A>aSnOUS:<3A>aSnOUS:aSnSnUS:<3A>a SUS-
S --nXB-U-U-n[SU5$)
zd
Simulate HPC computation of tire degradation rate.
Returns 0-1 value (higher = worse degradation).
r
<00><00>?<3F>-g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>(gffffff<66>?<3F>g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?)<03>_TIRE_DEGRADATION_RATESr_<00>min)r5rB<00>tire_age<67>
track_temp<EFBFBD> base_rate<74>temp_multiplier<65>age_multiplier<65> degradations r/rf<00>'Enricher._compute_tire_degradation_rate<74>s<><00><00>
,<2C>/<2F>/<2F> <0A>u<EFBFBD>E<> <09><1E><0F> <15><02>?<3F>!<21>O<EFBFBD> <17>"<22>_<EFBFBD>"<22>O<EFBFBD> <17>"<22>_<EFBFBD>!<21>O<EFBFBD><1D><0E> <13>b<EFBFBD>=<3D> <20>X<EFBFBD><02>]<5D>d<EFBFBD>$:<3A>;<3B>N<EFBFBD><1F>*<2A>_<EFBFBD><<3C>~<7E>M<> <0B><12>3<EFBFBD> <0B>$<24>$r.c<01><><00>[URR5S:agURRSSn[US[U5S-5[ S[U5S-5- n[U[U5S-S5[ S[U5[U5S--
5- nX2-
nUS:agUS :<3A>ag
g) zb
Analyze recent lap times to determine pace trend.
Returns: "improving", "stable", or "declining"
rG<00>stable<6C><65><EFBFBD><EFBFBD><EFBFBD>NrHr<00><00><><EFBFBD> improving<6E><00>?<3F> declining)rer3r<00>sum<75>max)r5<00> recent_laps<70>avg_first_half<6C>avg_second_half<6C>diffs r/rg<00>Enricher._compute_pace_trend<6E>s<><00><00>
<0F>t<EFBFBD>z<EFBFBD>z<EFBFBD>#<23>#<23> $<24>q<EFBFBD> (<28><1B><1A>j<EFBFBD>j<EFBFBD>*<2A>*<2A>2<EFBFBD>3<EFBFBD>/<2F> <0B><1D>[<5B>)=<3D>#<23>k<EFBFBD>*:<3A>A<EFBFBD>*=<3D>><3E>?<3F>#<23>a<EFBFBD><13>[<5B>IY<49>[\<5C>I\<5C>B]<5D>]<5D><0E><1D>k<EFBFBD>#<23>k<EFBFBD>*:<3A>A<EFBFBD>*=<3D>*><3E>?<3F>@<40>3<EFBFBD>q<EFBFBD>#<23>k<EFBFBD>JZ<4A>]`<60>al<61>]m<>op<6F>]p<>Jp<4A>Cq<43>q<><0F><1E>/<2F><04> <0F>$<24>;<3B><1E> <11>C<EFBFBD>Z<EFBFBD><1E>r.c<01>n<00>SSSSSS.nURUS5nX$S-
:agX$S-:<3A>ag X$S-
-
S
- $) zg
Compute probability of hitting tire performance cliff.
Returns 0-1 (0 = no risk, 1 = imminent cliff).
<EFBFBD>r<00>#rz<00>r <00>r=rw<00>$@)r_)r5rBr}<00> cliff_points<74> cliff_points r/rh<00>!Enricher._compute_tire_cliff_risk<73>s\<00><00><17><18><16><17><15> 
<EFBFBD> <0C>#<23>&<26>&<26>}<7D>b<EFBFBD>9<> <0B> <13>A<EFBFBD>o<EFBFBD> %<25><16> <15>q<EFBFBD><1F> (<28><16><1D>a<EFBFBD><0F>0<>D<EFBFBD>8<> 8r.c<01>*<00>URXC5nUS:<3A>a
US-US-/$US:<3A>a
US-US-/$US:Xa[SSU-
5nO%US :Xa[SS
U-
5nO[SS U-
5n[X-US -
5n[US-US -
5US -/$)zk
Calculate optimal pit stop window based on tire degradation.
Returns [start_lap, end_lap] for pit window.
<EFBFBD>ffffff<EFBFBD>?rrG<><E79A99><EFBFBD><EFBFBD><EFBFBD>?<3F>r rr<>r <00><00>&r<>rH)rhr<>r|)r5rSr"r}rB<00>
cliff_risk<EFBFBD>laps_remaining<6E>pit_laps r/ri<00>$Enricher._compute_optimal_pit_window<6F>s<><00><00>
<1A>2<>2<>=<3D>K<>
<EFBFBD> <15><03> <1B><1F>!<21>O<EFBFBD>[<5B>1<EFBFBD>_<EFBFBD>5<> 5<> <17>#<23> <1D><1F>!<21>O<EFBFBD>[<5B>1<EFBFBD>_<EFBFBD>5<> 5<><1D><06>&<26>!$<24>Q<EFBFBD><02>X<EFBFBD> <0A>!6<><0E><1E>(<28>*<2A>!$<24>Q<EFBFBD><02>X<EFBFBD> <0A>!6<><0E>!$<24>Q<EFBFBD><02>X<EFBFBD> <0A>!6<><0E><19>+<2B>6<>
<EFBFBD>Q<EFBFBD><0E>G<>G<EFBFBD><17> <0B>a<EFBFBD><0F><17>1<EFBFBD><1B>5<>w<EFBFBD><11>{<7B>C<> Cr.c<01><<00>URcgURU-
$)zg
Calculate performance delta vs baseline lap time.
Negative = slower than baseline, Positive = faster.
r=)r4)r5<00>current_lap_times r/rj<00>#Enricher._compute_performance_delta<74>s%<00><00>
<10> "<22> "<22> *<2A><16><13>&<26>&<26>)9<>9<>9r.c<01><><00>[SUS-
S- 5nUS::aSnOUS:aSnOUS:aSnO US:aSnOS n[US
-US --S 5$) z<>
Calculate competitive pressure based on position and gap to car ahead.
Returns 0-1 (0 = no pressure, 1 = extreme pressure).
High pressure scenarios:
- Close gap to car ahead (potential overtake opportunity)
- Poor position (need to push harder)
rwrg.@r=g@r<>r<>g333333<33>?g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?r<>g333333<33>?rG)r|rm)r5r:r><00>position_pressure<72> gap_pressures r/rk<00>&Enricher._compute_competitive_pressurest<00><00> <20><03>h<EFBFBD><11>l<EFBFBD>d<EFBFBD>%:<3A>;<3B><19> <18>3<EFBFBD> <1E><1E>L<EFBFBD> <19>C<EFBFBD> <1F><1E>L<EFBFBD> <19>C<EFBFBD> <1F><1E>L<EFBFBD> <19>D<EFBFBD> <20><1E>L<EFBFBD><1E>L<EFBFBD><15>'<27>#<23>-<2D> <0C>s<EFBFBD>0B<30>B<>Q<EFBFBD>G<>Gr.c<01><><00>[URR5S:agURRSSn[US[U5S-5[ S[U5S-5- n[U[U5S-S5[ S[U5[U5S--
5- nX#-
nUS:<3A>agUS :ag
g) zX
Analyze recent positions to determine trend.
Returns: "gaining", "stable", or "losing"
rGr<>r<>NrHrr<><00>gainingr<67><00>losing)rer3rr<>r<>)r5<00>recent_positionsr<73>r<>r<>s r/rl<00> Enricher._compute_position_trends<><00><00>
<0F>t<EFBFBD>z<EFBFBD>z<EFBFBD>#<23>#<23> $<24>q<EFBFBD> (<28><1B><1F>:<3A>:<3A>/<2F>/<2F><02><03>4<><18><1D>-<2D>.G<>s<EFBFBD>3C<33>/D<>a<EFBFBD>/G<>H<>I<>C<EFBFBD>PQ<50>SV<53>Wg<57>Sh<53>jk<6A>Sk<53>Ll<4C>l<><0E><1D>.<2E>s<EFBFBD>3C<33>/D<>a<EFBFBD>/G<>/H<>I<>J<>S<EFBFBD>QR<51>TW<54>Xh<58>Ti<54>lo<6C>qA<02>mB<02>DE<02>mE<02>UE<02>NF<02>F<02><0F><1D>/<2F><04> <0F>#<23>:<3A><1C> <11>D<EFBFBD>[<5B><1B>r.c<01>*<00>[SSSX- -
-5$)z<Estimate remaining fuel percentage based on lap progression.r=gY@rw)r<>)r5rSr"s r/rn<00>Enricher._estimate_fuel5s<00><00><12>3<EFBFBD><05><13> <0B>(@<40>!A<>B<>C<>Cr.c<01>n<00>U(dg[R"U5nUR5$! g=f)z#Convert lap time string to seconds.g<00>V@)<03>pd<70> to_timedelta<74> total_seconds)r5rp<00>tds r/rc<00>Enricher._parse_lap_time9s4<00><00><1B><17> <18><13><1F><1F><1C>.<2E>B<EFBFBD><15>#<23>#<23>%<25> %<25><> <18><17>s<00>%0<00>4)r4r3N)ro<00>Dict[str, Any]<5D>returnr<6E>)rBrr}rr~r`r<>r`)r<>r)rBrr}rr<>r`)
rSrr"rr}rrBrr<>r)r<>r`r<>r`)r:rr>r`r<>r`)rSrr"rr<>r`)rpz Optional[str]r<>r`)r&r'r(r)r*r6rtrfrgrhrirjrkrlrnrcr-r%r.r/r1r13sC<00><00><08>8<>V
<EFBFBD>t%<25>0<1C>.9<>0D<01>2:<3A>H<01>6<1C>.D<01>
r.r1)<10>
__future__r<00> dataclassesrr<00>typingrrrr <00>pandasr<73>r{<00>_TIRE_CLIFF_THRESHOLDrr1r%r.r/<00><module>r<>sZ<00><01>"<22>(<28>,<2C>,<2C><13>, <12><13> <11> <12> <10> <02><17><1B><15> <0B>
<1E>
<1E> <0B>
<1E>P<18>Pr.