Index: /branches/trigger_burst_research/sketch.py
===================================================================
--- /branches/trigger_burst_research/sketch.py	(revision 18292)
+++ /branches/trigger_burst_research/sketch.py	(revision 18293)
@@ -1,3 +1,4 @@
 # coding: utf-8
+import progressbar
 import calendar
 import numpy as np
@@ -32,5 +33,5 @@
 
 
-def get_data_runs_from_run_db(night_int, factdb):
+def get_all_data_runs_from_run_db(factdb):
     keys = [
         'fRunID',
@@ -41,9 +42,8 @@
 
     sql_query = """SELECT {comma_sep_keys}
-        FROM RunInfo WHERE fRunTypeKey=1 AND fNight={night:d};
+        FROM RunInfo WHERE fRunTypeKey=1 ORDER BY fNight;
         """
     sql_query = sql_query.format(
         comma_sep_keys=', '.join(keys),
-        night=night_int,
         )
     
@@ -57,9 +57,10 @@
 
 
+
 def get_trigger_rates(night_int, base_path='/fact/aux/'):
     night_string = str(night_int)
     fits_file = fits.open(
         base_path+'{y}/{m}/{d}/{n}.FTM_CONTROL_TRIGGER_RATES.fits'.format(
-            ni=night_string,
+            n=night_string,
             y=night_string[0:4],
             m=night_string[4:6],
@@ -71,5 +72,5 @@
 
 
-def add_ratio_and_more_to_dataframe(data_runs, trigger_rates):
+def add_ratio_and_more_to_dataframe(data_runs):
 
     # create new columns and pre-assign some hopefully good NULL-like-values
@@ -79,11 +80,31 @@
     data_runs['fBoardTriggerRateRatioAboveThreshold'] = np.nan
 
-    for dataframe_index in data_runs.index:
+    trigger_rates = None
+    last_night = None
+
+    progress = progressbar.ProgressBar(widgets=[progressbar.Bar('=', '[', ']'), ' ',
+                                            progressbar.Percentage(), ' ',
+                                            progressbar.ETA()])
+
+    for dataframe_index in progress(data_runs.index):
         this_run = data_runs.ix[dataframe_index]
+        if last_night != this_run['fNight']:
+            try:
+                trigger_rates = get_trigger_rates(this_run['fNight'])
+            except (IOError, ValueError):
+                continue
+            last_night = this_run['fNight']
+
         mask = (
             (trigger_rates['Time'] > fjd(this_run['fRunStart'])) *
             (trigger_rates['Time'] < fjd(this_run['fRunStop']))
             )
-        this_board_rates = trigger_rates['BoardRate'][mask]
+        
+        if mask.sum() == 0:
+            continue
+        try:
+            this_board_rates = trigger_rates['BoardRate'][mask]
+        except KeyError:
+            continue
 
         N = this_board_rates.shape[0]
@@ -109,7 +130,6 @@
 def main(night_int):
     factdb = create_DB_connection()
-    data_runs = get_data_runs_from_run_db(night_int, factdb)
-    trigger_rates = get_trigger_rates(night_int)
-    add_ratio_and_more_to_dataframe(data_runs, trigger_rates)
+    data_runs = get_all_data_runs_from_run_db(factdb)
+    add_ratio_and_more_to_dataframe(data_runs)
     return data_runs
 
