X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETGlitch.py;h=99241079953754de0c703f77a3a1ac15f8a888ff;hp=e9598f98a4eee20b920cbdaf2ed22f71dcbc8f9f;hb=11043432e6e4a058a219abd492b46cc644f35329;hpb=878e4212e36ef51e882ef9fc7d936ce8949127d2 diff --git a/client/GoodFETGlitch.py b/client/GoodFETGlitch.py index e9598f9..9924107 100644 --- a/client/GoodFETGlitch.py +++ b/client/GoodFETGlitch.py @@ -82,17 +82,38 @@ class GoodFETGlitch(GoodFET): sys.stdout.flush(); self.db.execute("drop table if exists glitchrange;"); self.db.execute("create table glitchrange(time integer primary key asc,max,min);"); - self.db.execute("insert into glitchrange(time,max,min) select distinct time, 0, 0 from glitches;"); self.db.commit(); - print "Maximums..."; + print "Calculating ranges..."; sys.stdout.flush(); - self.db.execute("update glitchrange set max=(select max(vcc) from glitches where glitches.time=glitchrange.time and count=0);"); - self.db.commit(); - print "Minimums..."; - sys.stdout.flush(); - self.db.execute("update glitchrange set min=(select min(vcc) from glitches where glitches.time=glitchrange.time and count>0);"); + + maxes={}; + mins={}; + + c=self.db.cursor(); + c.execute("select time,vcc,count from glitches;"); #Limit 10000 for testing. + progress=0; + for r in c: + progress=progress+1; + if progress % 1000000==0: print "%09i rows crunched." % progress; + t=r[0]; + v=r[1]; + count=r[2]; + if count==0: + try: oldmax=maxes[t]; + except: oldmax=-1; + if v>oldmax: maxes[t]=v; + elif count==1: + try: oldmin=mins[t]; + except: oldmin=0x10000; + if v