From 3a836df5889e88c43044c06c9a4fc954670480b9 Mon Sep 17 00:00:00 2001 From: weihe <amvdw95@gmail.com> Date: Wed, 22 Jul 2015 09:04:28 +0000 Subject: [PATCH] update obspack_geocarbon.py for dealing with mismatched footprint issue --- da/stilt/obspack_geocarbon.py | 52 ++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/da/stilt/obspack_geocarbon.py b/da/stilt/obspack_geocarbon.py index bba8054..9eb204c 100755 --- a/da/stilt/obspack_geocarbon.py +++ b/da/stilt/obspack_geocarbon.py @@ -109,17 +109,45 @@ class ObsPackObservations(Observations): flags = ncf.get_variable('obs_flag').take(subselect, axis=0) ncf.close() + pathfoot="/Storage/ctdas-wrfstilt/stilt_footprints/" + + ccgg_evn_foot=[] + dates_foot=[] + obs_foot=[] + flags_foot=[] + alts_foot=[] + lats_foot=[] + lons_foot=[] + obspackid_foot=[] + for n in range(len(dates)): - used_ids = self.getvalues('id',list) - if ccgg_evn[n] in used_ids: - ii = used_ids.index(ccgg_evn[n]) + + dir_foot=os.path.join(pathfoot,"%s"%dates[n].year,"%02d"%dates[n].month) + list_files=os.listdir(dir_foot) + str_id="%s"%ccgg_evn[n] + + for i in list_files: + if str_id in i: + ccgg_evn_foot.append(ccgg_evn[n]) + dates_foot.append(dates[n]) + obs_foot.append(obs[n]) + flags_foot.append(flags[n]) + alts_foot.append(alts[n]) + lats_foot.append(lats[n]) + lons_foot.append(lons[n]) + obspackid_foot.append(obspackid[n]) + + for n in range(len(dates_foot)): + used_ids = self.getvalues('id',list) + if ccgg_evn_foot[n] in used_ids: + ii = used_ids.index(ccgg_evn_foot[n]) logging.error("Error when reading from file: %s"%ncfile) - logging.error("This sample ID (%d) is not unique"%ccgg_evn[n]) + logging.error("This sample ID (%d) is not unique"%ccgg_evn_foot[n]) logging.error("Previously used from file: %s"%self.datalist[ii].fromfile) logging.error("...skipping") raise IOError else: - self.datalist.append(MoleFractionSample(ccgg_evn[n], dates[n], datasetname, obs[n], 0.0, 0.0, 0.0, 0.0, flags[n], alts[n], lats[n], lons[n], obspackid[n], species, 1, 0.0, infile)) + self.datalist.append(MoleFractionSample(ccgg_evn_foot[n], dates_foot[n], datasetname, obs_foot[n], 0.0, 0.0, 0.0, 0.0, flags_foot[n], alts_foot[n], lats_foot[n], lons_foot[n], obspackid_foot[n], species, 1, 0.0, infile)) logging.info("Observations list now holds %d values" % len(self.datalist)) @@ -347,7 +375,12 @@ class ObsPackObservations(Observations): identifier, incalt = value.split(';') site_incalt[identifier.strip()] = (int(incalt)) + print "XXX before pop: %d" %(len(self.datalist)) for s_index,obs in enumerate(self.datalist): # loop over all available data points + #for obs in self.datalist: + + # s_index = self.datalist.index(obs) + #print s_index 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 @@ -368,8 +401,12 @@ class ObsPackObservations(Observations): if site_info[identifier]['category'] == 'do-not-use' or exclude_hourly: logging.warning("Site found (%s, %d), but data point not used in assimilation !!!" % (identifier, obs.id)) logging.warning(" .... removing data point from Observation List!!!") - removed = self.datalist.pop(s_index) - continue + #print s_index + #self.datalist.remove(self.datalist[s_index]) + #del self.datalist[s_index] + # removed = self.datalist.pop(s_index) + + #continue else: logging.debug("Site found (%s, %d)" % (identifier, obs.id)) obs.mdm = site_info[identifier]['error'] * self.global_R_scaling @@ -395,6 +432,7 @@ class ObsPackObservations(Observations): logging.warning("Observation location for (%s, %d), is moved by %3.2f meters in altitude" % (identifier, obs.id, incalt)) + print "XXX after pop: %d" %(len(self.datalist)) # Add site_info dictionary to the Observations object for future use -- GitLab