Skip to content

Commit dd24094

Browse files
committed
Fix V112 circular import with local deterministic hash
1 parent 1e057ab commit dd24094

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

competitions/trace_the_ace/v112_fast_raw_observable_screen.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55
Escalate only >= .003 V97 gain; >= .010 is phase-change candidate.
66
"""
77
from __future__ import annotations
8-
import argparse, json, re
8+
import argparse, json, re, hashlib
99
from pathlib import Path
1010
import numpy as np
1111
from scipy.sparse import hstack, csr_matrix
1212
from sklearn.feature_extraction.text import HashingVectorizer
1313
from sklearn.linear_model import LogisticRegression
1414
from sklearn.model_selection import GroupKFold
1515
from sklearn.preprocessing import StandardScaler
16-
from v111_fast_residual_screen import h
1716
from v110_residual_collider_state_discovery import hb, ll, logit, p97_predict
1817
from v71_mastery_events import load_transcript, normalize_roles
1918
from v75_canonical_trajectory import load_training, SEED
@@ -23,6 +22,9 @@
2322
EPS=1e-5
2423
MATH=re.compile(r"\d|[+\-*/=×÷<>%]|\b(?:half|quarter|third|decimal|fraction|percent|times|divide|multiply)\b",re.I)
2524

25+
def h(x):
26+
return int(hashlib.sha256(str(x).encode()).hexdigest()[:16],16)
27+
2628
def texts(df,obj):
2729
d=normalize_roles(df).reset_index(drop=True); role=d.role_repaired.astype(str).tolist(); c=d.content.fillna('').astype(str).tolist()
2830
student=' '.join(x for r,x in zip(role,c) if r=='student'); tutor=' '.join(x for r,x in zip(role,c) if r=='tutor'); full=' '.join(f'[{r}] {x}' for r,x in zip(role,c))
@@ -61,9 +63,7 @@ def main(a):
6163
for k,txt in T.items():
6264
X=hv.transform(txt);q=sparse_oof(P,X,y,obj);out['tests'][k]={'ll':ll(y,q),'gain':base-ll(y,q)}
6365
Xn=np.vstack(N);q=dense_oof(P,Xn,y,obj);out['tests']['STRUCTURE']={'ll':ll(y,q),'gain':base-ll(y,q)}
64-
# Combined raw views: cheap union, tests whether complementary raw observables jointly matter.
6566
X=hstack([hv.transform(T['STUDENT']),hv.transform(T['TUTOR']),hv.transform(T['LOCAL']),csr_matrix(StandardScaler().fit_transform(Xn))],format='csr');q=sparse_oof(P,X,y,obj);out['tests']['COMBINED']={'ll':ll(y,q),'gain':base-ll(y,q)}
66-
# Tight collision geometry from the same frozen predictions.
6767
ds=[]
6868
for o in np.unique(obj):
6969
z=np.where(obj==o)[0];a0=z[y[z]==0];a1=z[y[z]==1]

0 commit comments

Comments
 (0)