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

95 lines
9.3 KiB
Plaintext
Raw Normal View History

2025-10-18 23:56:53 -05:00
<EFBFBD>
<00><><EFBFBD>h<EFBFBD>%<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'Sr
S\S 'S
r S \S 'S r S\S'Sr S\S'SrS \S'Srg)<15> EnricherState<74>"z4Maintains race state across laps for trend analysis.)<01>default_factoryz List[float]<5D> lap_times<65>
lap_speedsr<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)<10>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__doc__r<00>listr<00>__annotations__rrrrrr!<00>__static_attributes__r"<00><00>6/Users/adipu/Documents/HPCSimSite/hpcsim/enrichment.pyrr"sX<00><00>><3E>"<22>4<EFBFBD>8<>I<EFBFBD>{<7B>8<>#<23>D<EFBFBD>9<>J<EFBFBD> <0B>9<><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>n<00>\rSrSrSrSrSSjrSSjrSSjrSSjr SSjr
2025-10-18 23:56:53 -05:00
SS jr SS
jr SS jr S rg )<16>Enricher<65>.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__6s<00><00>"<22>_<EFBFBD><04>
<EFBFBD>37<EFBFBD><04>r+c <01><><00>[URSS55n[URSS55nURS5n[URSS55n[URSS55n[URS S
55R 5n[URS S55n[URS S 55n [ URSS55n
UR U5n URRRU 5 URRRU5 X<>Rl XpRl X0Rl [URR5S:<3A>aPURRSSURlURRSSURl
URbX<>R:aX<>lUR!XxU 5n UR#5n UR%Xx5nUR'X#X<>5nUR)U 5nU[+U S5U [+US5U[+US5S.nURR,UUU
(aSOSU S.SSUUUR/X#5S.S.nUUS.$)zd
Main enrichment method for lap-level data.
Returns enriched telemetry + race context for AI layer.
<EFBFBD>
lap_numberrrr<00>lap_time<6D> average_speed<65><00> max_speed<65> tire_compound<6E>MEDIUM<55>tire_life_laps<70>track_temperatureg9@<40>rainfallF<6C>
i<><69><EFBFBD><EFBFBD>N<EFBFBD><00>)<06>lap<61>tire_degradation_rate<74>
pace_trend<EFBFBD>tire_cliff_risk<73>optimal_pit_window<6F>performance_delta<74>Wet<65>Dry)r!r<00> current_lap<61>weather_condition<6F>track_temp_celsius<75>Alonso<73>)<05> driver_name<6D>current_positionr<00> tire_age_laps<70>fuel_remaining_percent)<02> race_info<66> driver_state)<02>enriched_telemetry<72> race_context)r<00>get<65>floatr<00>lower<65>bool<6F>_parse_lap_timer1r<00>appendrrrr<00>lenr2<00>_compute_tire_degradation_rate<74>_compute_pace_trend<6E>_compute_tire_cliff_risk<73>_compute_optimal_pit_window<6F>_compute_performance_delta<74>roundr!<00>_estimate_fuel)r3<00>lap_datar7r<00> lap_time_strr9r;r<r>r?r@<00>lap_time_seconds<64> tire_deg_raterFrG<00>
pit_windowrIrWrXs 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><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<>&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> <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><1E>%*<2A>=<3D>!<21>%<<3C>$<24>$<24>_<EFBFBD>a<EFBFBD>8<>",<2C>!&<26>'8<>!<21>!<<3C> 
<EFBFBD><1A>#<23>j<EFBFBD>j<EFBFBD>3<>3<>(<28>)<29>.6<EFBFBD>U<EFBFBD>E<EFBFBD>&7<> <0E> (<28>$%<25>)6<>!/<2F>*.<2E>*=<3D>*=<3D>j<EFBFBD>*U<> <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_RATESrY<00>min)r3r<<00>tire_age<67>
track_temp<EFBFBD> base_rate<74>temp_multiplier<65>age_multiplier<65> degradations r,r`<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"
rB<00>stable<6C><65><EFBFBD><EFBFBD><EFBFBD>NrCrg<00><><EFBFBD> improvingg<00>?<3F> declining)r_r1r<00>sum<75>max)r3<00> recent_laps<70>avg_first_half<6C>avg_second_half<6C>diffs r,ra<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>#rr<00>r rPr:rog$@)rY)r3r<ru<00> cliff_points<74> cliff_points r,rb<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.
gffffff<EFBFBD>?rrBg<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>r rr<>r <00><00>&rPrC)rbr<>rt)r3rLrrur<<00>
cliff_risk<EFBFBD>laps_remaining<6E>pit_laps r,rc<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:)r2)r3<00>current_lap_times r,rd<00>#Enricher._compute_performance_delta<74>s%<00><00>
<10> "<22> "<22> *<2A><16><13>&<26>&<26>)9<>9<>9r+c<01>*<00>[SSSX- -
-5$)z<Estimate remaining fuel percentage based on lap progression.r:gY@ro)r<>)r3rLrs r,rf<00>Enricher._estimate_fuel<65>s<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)r3rh<00>tds r,r]<00>Enricher._parse_lap_time<6D>s4<00><00><1B><17> <18><13><1F><1F><1C>.<2E>B<EFBFBD><15>#<23>#<23>%<25> %<25><> <18><17>s<00>%0<00>4)r2r1N)rg<00>Dict[str, Any]<5D>returnr<6E>)r<rrurrvrZr<>rZ)r<>r)r<rrurr<>rZ)
rLrrrrurr<rr<>z List[int])r<>rZr<>rZ)rLrrrr<>rZ)rhz Optional[str]r<>rZ)r#r$r%r&r'r4rlr`rarbrcrdrfr]r*r"r+r,r.r..s8<00><00><08>8<>I
<EFBFBD>Z%<25>0<1C>.9<>0D<01>2:<3A>D<01>
r+r.)<10>
__future__r<00> dataclassesrr<00>typingrrrr <00>pandasr<73>rs<00>_TIRE_CLIFF_THRESHOLDrr.r"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>Q<18>Qr+