return range(min,max,1);
#If we get here, there are no points. Return empty set.
return [];
- def buildglitchvoltages(self):
+ def crunch(self):
"""This builds tables for glitching voltage ranges from the training set."""
- print "Precomputing glitching ranges. This might take a while.";
+ print "Precomputing glitching ranges. This might take a long while.";
+ print "Times...";
sys.stdout.flush();
- self.db.execute("create temporary table glitchrange(time integer primary key asc,max,min);");
+ 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...";
+ 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);");
-
+ self.db.commit();
+ print "Ranges calculated.";
def graphx11(self):
try:
import Gnuplot, Gnuplot.PlotItems, Gnuplot.funcutils
tstop=self.client.glitchstarttime();
times=range(tstart,tstop);
random.shuffle(times);
- self.buildglitchvoltages();
+ #self.crunch();
count=0.0;
- total=1.0*len(t);
- for t in times:
- voltages=self.glitchvoltages(t);
+ total=1.0*len(times);
+
+ c=self.db.cursor();
+ c.execute("select time,min,max from glitchrange where max-min>0;");
+ rows=c.fetchall();
+ for r in rows:
+ t=r[0];
+ min=r[1];
+ max=r[2];
+ voltages=range(min,max,1);
count=count+1.0;
print "%02.02f Exploring %04i points in t=%04i." % (count/total,len(voltages),t);
sys.stdout.flush();