Source identity
| Field | Recorded value |
|---|---|
| Source type | archive member |
| Original record | analyze_tables.py |
| Date | Not specified in source |
| Path or archive member | archives/libsrc-5feba6626817/Supplementary_Material_S1/code/analyze_tables.py |
| Original SHA-256 | 8ee39c6cbdc0882c874e3592786d61878e08785f5f34c431ac74b526b420d62c |
| Reading-copy SHA-256 | 8ee39c6cbdc0882c874e3592786d61878e08785f5f34c431ac74b526b420d62c |
| Archive source | {"sourceId": "libsrc-5feba6626817", "member": "Supplementary_Material_S1/code/analyze_tables.py"} |
Every recorded occurrence
These 2 records contain identical original source bytes. Their paths and revisions remain part of the archive.
| Original record | Branch or archive | Revision / identifier | Original location |
|---|---|---|---|
| analyze_tables.py | {"sourceId": "libsrc-5feba6626817", "member": "Supplementary_Material_S1/code/analyze_tables.py"} | libsrc-18d222ac7468 | archives/libsrc-5feba6626817/Supplementary_Material_S1/code/analyze_tables.py |
| analyze_tables.py | {"sourceId": "libsrc-6c9313f7cdd5", "member": "Declaration_Study_v1/code/analyze_tables.py"} | libsrc-7aa48e994fb1 | archives/libsrc-6c9313f7cdd5/Declaration_Study_v1/code/analyze_tables.py |
Recovered source transcript
Download complete source text ↓45 lines · 3.0 KB
"""Recompute the manuscript's numerical log summaries from verified derived arrays."""
from __future__ import annotations
import hashlib,json
from pathlib import Path
import numpy as np
import pandas as pd
ROOT=Path(__file__).resolve().parents[1]
def segmented(x,y,min_segment=20):
fits=[]
for j in range(min_segment,len(x)-min_segment+1):
left=np.column_stack([np.ones(j),x[:j]])
right=np.column_stack([np.ones(len(x)-j),x[j:]])
bl=np.linalg.lstsq(left,y[:j],rcond=None)[0];br=np.linalg.lstsq(right,y[j:],rcond=None)[0]
sse=float(np.sum((y[:j]-left@bl)**2)+np.sum((y[j:]-right@br)**2))
fits.append((int(x[j-1]),sse,float(bl[1]),float(br[1])))
return min(fits,key=lambda r:r[1]),pd.DataFrame(fits,columns=['split_after_step','sse','slope_left','slope_right'])
def main():
out=ROOT/'results';out.mkdir(exist_ok=True)
g=np.load(ROOT/'data/gradient.npy',allow_pickle=False);e=np.load(ROOT/'data/eval.npy',allow_pickle=False)
assert g.shape==(792,2) and e.shape==(79,2)
gt=pd.DataFrame(g,columns=['step','grad_norm']);gt['step']=gt['step'].astype(int)
et=pd.DataFrame(e,columns=['step','eval_loss']);et['step']=et['step'].astype(int);et['loss_drop']=et['eval_loss'].shift(1)-et['eval_loss']
smooth={}
for w in [5,11,21,31]:
gt[f'mean_{w}']=gt.grad_norm.rolling(w,center=True,min_periods=w).mean()
i=gt[f'mean_{w}'].idxmax();smooth[str(w)]={'step':int(gt.loc[i,'step']),'mean':float(gt.loc[i,f'mean_{w}'])}
best,scan=segmented(g[:300,0],g[:300,1]);scan.to_csv(out/'prefix_break_scan.csv',index=False)
a=g[160:180,1].mean();b=g[180:200,1].mean()
largest=et.loc[et.loss_drop.idxmax()]
bad=et.loc[et.loss_drop<=0,['step','eval_loss','loss_drop']].to_dict(orient='records')
summary={'training_runs':1,'n_checkpoints':167,'n_gradient':len(g),'n_eval':len(e),
'raw_gradient_peak':{'step':int(g[g[:,1].argmax(),0]),'value':float(g[:,1].max())},
'smoothed_peaks':smooth,'gradient_window_161_180_mean':float(a),'gradient_window_181_200_mean':float(b),'gradient_window_decline_percent':float(100*(1-b/a)),
'prefix_two_line_best':{'split_after_step':best[0],'sse':best[1],'slope_left':best[2],'slope_right':best[3]},
'largest_eval_decrease':{'from_step':int(largest.step-10),'to_step':int(largest.step),'decrease':float(largest.loss_drop)},
'eval_first':{'step':int(e[0,0]),'loss':float(e[0,1])},'eval_last':{'step':int(e[-1,0]),'loss':float(e[-1,1])},
'eval_reduction_percent':float(100*(1-e[-1,1]/e[0,1])),'nondecreasing_eval_intervals':bad,
'original_prefix_numeric_digests':{'gradient':hashlib.sha256(np.asarray(g[:300],dtype='<f8').tobytes()).hexdigest(),'eval':hashlib.sha256(np.asarray(e[:30],dtype='<f8').tobytes()).hexdigest()}}
gt.to_csv(out/'full_gradient.csv',index=False);et.to_csv(out/'full_evaluation.csv',index=False)
(out/'log_summary.json').write_text(json.dumps(summary,indent=2))
return summary
if __name__=='__main__':print(json.dumps(main(),indent=2))