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