In [1]:
from __future__ import print_function
%pylab notebook
import datetime as dt
import glob
import matplotlib.pyplot as plt
import pdb
from charistools.hypsometry import Hypsometry
from charistools.meltModels import ImshowTriSurfMelt
from charistools.meltModels import PlotTriSurfInput
from charistools.meltModels import PlotTriSurfMelt
from charistools.modelEnv import ModelEnv
from charistools.timeSeries import TimeSeries
import pandas as pd
import re
import os
In [10]:
dir = '/scratch/summit/brodzik/ti_model/derived_hypsometries/partner_basins'
dir = '/pl/active/charis/ti_model/derived_hypsometries/REECv0'
In [11]:
%cd $dir
%ls
In [15]:
def read_melt_for(basinName, dir):
nstrikes = 2
years = 2001 + np.arange(14)
# Initialize an empty df
index = [pd.to_datetime(year, format='%Y') for year in years]
df = pd.DataFrame(index=index)
df['EGImelt'] = 0.
df['SOImelt'] = 0.
df['SOLmelt'] = 0.
for year in years:
yearDt = pd.to_datetime(year, format='%Y')
list = sorted(glob.glob("%s/%s/%s.%s.0100m.modicev04_%sstrike.*melt_by_elev*.txt" % (
dir, basinName, basinName, str(year), str(nstrikes))))
if len(list) != 3:
raise ValueError("Unexpected number of melt files found for %s, %d." % (basinName, year))
# Assume sorted list is EGI/SOI/SOL:
egiMeltHyps = Hypsometry(list[0])
df.loc[yearDt, 'EGImelt'] = egiMeltHyps.data_by_doy().sum()
soiMeltHyps = Hypsometry(list[1])
df.loc[yearDt, 'SOImelt'] = soiMeltHyps.data_by_doy().sum()
solMeltHyps = Hypsometry(list[2])
df.loc[yearDt, 'SOLmelt'] = solMeltHyps.data_by_doy().sum()
return df
In [ ]:
%cd $dir
basinNames = sorted(glob.glob("SY_*_at_*"))
basinNames
In [13]:
basinNames = sorted(glob.glob("??_*_at_*"))
basinNames
Out[13]:
In [16]:
fig, ax = plt.subplots(len(basinNames), 1, figsize=(10, len(basinNames)*3))
for i, basinName in enumerate(basinNames):
df = read_melt_for(basinName, dir)
if len(basinNames) == 1:
df.plot(ax=ax)
ax.set_title(basinName)
else:
df.plot(ax=ax[i])
ax[i].set_title(basinName)
fig.tight_layout()
In [ ]: