FONTSIZE = 25 criteria = 10 # error criteria layer = 15 # the first layer you want to plot obs = pd.read_csv("ctd_good.csv") # From nearestIndexInMod.py tf_index = np.where(obs["TF"].notnull())[0] obsLon, obsLat = obs["LON"][tf_index], obs["LAT"][tf_index] obsTime = pd.Series(np_datetime(obs["END_DATE"][tf_index]), index=tf_index) obsTemp = pd.Series(str2ndlist(obs["TEMP_VALS"][tf_index]), index=tf_index) # obsTemp = pd.Series(bottom_value(obs['TEMP_VALS'][tf_index]), index=tf_index) obsDepth = pd.Series(str2ndlist(obs["TEMP_DBAR"][tf_index]), index=tf_index) modDepthLayer = pd.Series(str2ndlist(obs["modDepthLayer"][tf_index], bracket=True), index=tf_index) starttime = datetime(2009, 8, 24) # Choose the starttime and endtime that cover the whole observation time range. endtime = datetime(2013, 12, 13) tempObj = wtm.waterCTD() url = tempObj.get_url(starttime, endtime) modTemp = tempObj.watertemp(obsLon.values, obsLat.values, obsDepth.values, obsTime.values, url) d = { "lon": obsLon, "lat": obsLat, "time": obsTime.values, "obstemp": obsTemp.values, "depth": obsDepth, "modlayer": modDepthLayer.values, "modtemp": modTemp, } a = pd.DataFrame(d, index=tf_index) ind = [] # the indices needed
Temp = (temp[ind,a,b]-temp[ind-1,a,b])/(lyrDepth[ind]-lyrDepth[ind-1]) * \ (depth-lyrDepth[ind-1]) + temp[ind-1,a,b] t.append(Temp) modTemp.append(t) modTemp = np.array(modTemp) return modTemp FONTSIZE = 25 obsData = pd.read_csv('ctd_good.csv') tf_index = np.where(obsData['TF'].notnull())[0] obsLon, obsLat = obsData['LON'][tf_index], obsData['LAT'][tf_index] obsTime = pd.Series(np_datetime(obsData['END_DATE'][tf_index]), index=tf_index) obsTemp = pd.Series(str2ndlist(obsData['TEMP_VALS'][tf_index]), index=tf_index) # obsTemp = pd.Series(bottom_value(obs['TEMP_VALS'][tf_index]), index=tf_index) obsDepth = pd.Series(str2ndlist(obsData['TEMP_DBAR'][tf_index]), index=tf_index) modLayer = pd.Series(str2ndlist(obsData['modDepthLayer'][tf_index],bracket=True), index=tf_index) modNearestIndex = pd.Series(str2ndlist(obsData['modNearestIndex'][tf_index], bracket=True), index=tf_index) starttime = datetime(2009, 8, 24) endtime = datetime(2013, 12, 13) tempObj = wtm.waterCTD() url = tempObj.get_url(starttime, endtime) # modTemp1 = tempObj.watertemp(obsLon.values, obsLat.values, obsDepth.values, obsTime.values, url) modDataAll = tempObj.get_data(url) oceantime = modDataAll['ocean_time'] modTempAll = modDataAll['temp'] s_rho = modDataAll['s_rho'] waterDepth = modDataAll['h'] modTemp = getModTemp(modTempAll, obsTime, modLayer, modNearestIndex, s_rho, waterDepth, starttime, oceantime) obsData['modTempByDepth'] = pd.Series(modTemp, index = tf_index) obsData.to_csv('ctdWithModTempByDepth.csv')
obsData = obsData.ix[tf_index] id = obsData['PTT'].drop_duplicates().values print 'turtle id:', id tID = id[6] # 0~4, 6,7,8,9, turtle ID. layers = pd.Series(str2ndlist(obsData['modDepthLayer'], bracket=True), index=obsData.index) # If str has '[' and ']', bracket should be True. modNearestIndex = pd.Series(str2ndlist(obsData['modNearestIndex'].values, bracket=True), index=obsData.index) obsTemp = pd.Series(str2ndlist(obsData['TEMP_VALS'].values), index=obsData.index) obsTime = pd.Series(np_datetime(obsData['END_DATE'].values), index=obsData.index) layers = layers[obsData['PTT']==tID] modNearestIndex = modNearestIndex[obsData['PTT']==tID] time = obsTime[obsData['PTT']==tID] temp = obsTemp[obsData['PTT']==tID] starttime, endtime=np.amin(time), np.amax(time)+timedelta(hours=1) modObj = wtm.waterCTD() url = modObj.get_url(starttime, endtime) oceantime = netCDF4.Dataset(url).variables['ocean_time'] modTempAll = netCDF4.Dataset(url).variables['temp'] modTemp = getModTemp(modTempAll, obsTime, layers, modNearestIndex, starttime, oceantime) modTemp = pd.Series(modTemp, index=temp.index) obsMaxTemp, obsMinTemp = [], [] modMaxTemp, modMinTemp = [], [] for i in temp.index: #this loop calculate min & max temperature of each dive obsMaxTemp.append(max(temp[i])) obsMinTemp.append(min(temp[i])) modMaxTemp.append(max(modTemp[i])) modMinTemp.append(min(modTemp[i])) data = pd.DataFrame({'time':time.values, 'obsMaxTemp':obsMaxTemp, 'obsMinTemp':obsMinTemp, 'modMaxTemp': modMaxTemp, 'modMinTemp': modMinTemp}, index=range(len(time)))