In [1]:
%run basics
%matplotlib
In [2]:
def find_indices(a,b):
tmpset = set(a)
indices = [i for i,item in enumerate(b) if item in tmpset]
return indices
In [3]:
tower_name = qcio.get_filename_dialog(path="../../Sites/")
In [4]:
access_name = qcio.get_filename_dialog(path="../../Sites")
In [5]:
ds_tower = qcio.nc_read_series(tower_name)
In [6]:
ds_alternate = qcio.nc_read_series(access_name)
In [7]:
ldt_tower = ds_tower.series["DateTime"]["Data"]
start_tower = ldt_tower[0]
end_tower = ldt_tower[-1]
ldt_alternate = ds_alternate.series["DateTime"]["Data"]
start_alternate = ldt_alternate[0]
end_alternate = ldt_alternate[-1]
In [8]:
start_overlap = start_alternate>=start_tower and start_alternate<=end_tower
end_overlap = end_alternate>=start_alternate and end_alternate<=end_tower
overlap = start_overlap or end_overlap
print start_overlap,end_overlap,overlap
In [9]:
print ldt_tower[0],ldt_tower[-1]
print ldt_alternate[0],ldt_alternate[-1]
In [10]:
# index of alternate datetimes that are also in tower datetimes
alternate_index = find_indices(ldt_tower,ldt_alternate)
# index of tower datetimes that are also in alternate datetimes
tower_index = find_indices(ldt_alternate,ldt_tower)
In [11]:
ldta = [ldt_alternate[i] for i in alternate_index]
ldtt = [ldt_tower[i] for i in tower_index]
ldta==ldtt
Out[11]:
In [12]:
alternate_series_list = [item for item in ds_alternate.series.keys() if "_QCFlag" not in item]
In [16]:
nRecs_tower = ds_tower.globalattributes["nc_nrecs"]
ds_alternate_overlap = qcio.DataStructure()
ds_alternate_overlap.globalattributes = ds_alternate.globalattributes
ds_alternate_overlap.series["DateTime"] = ds_tower.series["DateTime"]
ds_alternate_overlap.globalattributes["nc_nrecs"] = nRecs_tower
for series in alternate_series_list:
if series in ["DateTime","DateTime_UTC"]: continue
data,flag,attr = qcutils.GetSeriesasMA(ds_alternate,series)
data_overlap = numpy.full(nRecs_tower,c.missing_value,dtype=numpy.float64)
flag_overlap = numpy.ones(nRecs_tower,dtype=numpy.int32)
data_overlap[tower_index] = data[alternate_index]
flag_overlap[tower_index] = flag[alternate_index]
attr_overlap = attr
qcutils.CreateSeries(ds_alternate_overlap,series,data_overlap,Flag=flag_overlap,Attr=attr_overlap)
In [17]:
Fsd_tower,f,a = qcutils.GetSeriesasMA(ds_tower,"Fsd")
Fsd_alt,f,a = qcutils.GetSeriesasMA(ds_alternate_overlap,"Fsd_11")
fig=plt.figure()
plt.plot(ldt_tower,Fsd_tower,'b.')
plt.plot(ldt_tower,Fsd_alt,'r+')
plt.show()
In [ ]: