From 2e090e13c56eaf2a8ace0f6eaf149a2426047ac4 Mon Sep 17 00:00:00 2001
From: ivar <amvdw95@gmail.com>
Date: Mon, 31 Aug 2015 14:35:14 +0000
Subject: [PATCH] Removed bug in add_model_data_mismatch. Without the 
 do-not-simulate flag in sites_and_weights.rc file the complete data list was
 returned instead the trimmed down list that is filtered.

---
 da/stilt/obspack.py | 58 ++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 52 insertions(+), 6 deletions(-)

diff --git a/da/stilt/obspack.py b/da/stilt/obspack.py
index 6f803e8a..2ef637f8 100755
--- a/da/stilt/obspack.py
+++ b/da/stilt/obspack.py
@@ -421,6 +421,48 @@ class ObsPackObservations(Observations):
         eventids=array(eventids)
         logging.info('eventids %s'%eventids)
 
+        paired_flag=zeros((len(self.datalist)),)
+        paired_flag[:]=False
+        filtered_obs=zeros((len(self.datalist)),)
+        counter=1.
+        counter2=1.
+        for i,obs in enumerate(self.datalist):
+            psite=obs.code
+            pday=obs.xdate.day
+            pobs=obs.obs
+            if i >0:
+                if pday == pday_old and psite == psite_old
+                    paired_flag[i]= True
+                    paired_flag[i-1]= True
+                    if pobs -pobs_prev <1.0:
+                        pobs_avr=(pobs+pobs_avr)
+                        counter = counter+1.
+                        counter2 = counter2+1.
+                        filtered_obs[i] =0.
+                    else:
+                        filtered_obs[i]=0.
+                        counter2 = counter2+1.
+                else:
+                    pday_prev= pday
+                    psite_prev = psite
+                    pobs_prev = pobs
+                    paired_flag[i]=False
+                    filtered_obs[i-counter2]=pobs_avr/counter
+                    counter=1.
+                    counter2=1.
+            else:
+                pday_prev= pday            
+                psite_prev = psite
+                pobs_prev = pobs
+                paired_flag[i] = False
+                pobs_avr = pobs
+                filtered_obs[i] = pobs
+      
+        logging.info("Boolean list paired observations: %s"%paired_flag)
+
+        logging.info("Obs list paired observations: %s"%filtered_obs)
+
+
         for i,obs in enumerate(self.datalist):
             obs.mdm = 1000.0  # default is very high model-data-mismatch, until explicitly set by script
             obs.flag = 99  # default is do-not-use , until explicitly set by script
@@ -498,12 +540,16 @@ class ObsPackObservations(Observations):
 
                 logging.warning("Observation location for (%s, %d), is moved by %3.2f meters in altitude" % (identifier, obs.id, incalt))
 
-        if len(do_not_simulate) > 0 :
-            logging.info("do-not-simulate flags located")
-            self.datalist = [self.datalist[k] for k in do_simulate]
-            logging.info("After do-not-simulate filter observations list now holds %d values" % len(self.datalist))
-        else:
-            logging.info("No do-not-simulate flags, continues normally ")
+        #if len(do_not_simulate) > 0 :
+        #    logging.info("do-not-simulate flags located")
+        #    self.datalist = [self.datalist[k] for k in do_simulate]
+        #    logging.info("After do-not-simulate filter observations list now holds %d values" % len(self.datalist))
+        #else:
+        #    logging.info("No do-not-simulate flags, continues normally ")
+        #    logging.info("Observations list now holds %d values" % len(self.datalist))
+
+        self.datalist = [self.datalist[k] for k in do_simulate]
+        logging.info("After multple filters observations list now holds %d values" % len(self.datalist))
 
         # Add site_info dictionary to the Observations object for future use
 
-- 
GitLab