def extract(crop_name, filnavn, output): harvest = DaisyDlf(filnavn) df = harvest.Data # summere og plot af udbytte i tørstof DM harv = df[['crop', 'leaf_' + output, 'stem_' + output, 'sorg_' + output]] DMG = harv.groupby('crop') rg = DMG.get_group(crop_name).sum(axis=1) return (rg)
#pf3=pd.DataFrame(meas, columns=['grassN']) def rmse(pred, obs): return np.sqrt(((pred - obs)**2).mean()) # Plot tørstofsudbytte for kløver, græs og samlet i søjlediagram MotherFolder = '..\RunDaisy11' items = os.walk(MotherFolder) index = 1 fig = plt.figure(figsize=(15, 10)) # fig, axes = plt.subplots(nrows=2, ncols=3) for root, dirs, filenames in items: for d in dirs: print(d) harvest = DaisyDlf(os.path.join(root, d, "DailyP-harvest.dlf")) df = harvest.Data # summere og plot af udbytte i tørstof DM DMharv = df[['crop', 'leaf_N', 'stem_N', 'sorg_N']] DMG = DMharv.groupby('crop') rg = DMG.get_group('Ryegrass').sum(axis=1) wc = DMG.get_group('Wclover').sum(axis=1) # Laver et subplot, som derefter bliver det aktive som de næste plt virker på ax = plt.subplot(3, 4, index) index += 1 df22 = pd.DataFrame([rg, wc]).T df22.columns = ['Ryegrass', 'Wclover'] df2 = df22.loc['2006-1-1':'2011-1-1', :] # Vil gerne plott målt mod simuleret output - først et plot for hver id - og så alle samlet. #Udvælger en ny dataframe med data hvor ID = d. Det samme som tidligere blev gjort i loop #Group og tag gennemsnit
def opti(crop_name, m_cropname, output='DM', makeplots=False): MotherFolder = '..\RunDaisy2' items = os.walk(MotherFolder) rmse_val = 0 index = 1 fig = plt.figure(figsize=(8, 8)) # fig, axes = plt.subplots(nrows=2, ncols=3) for root, dirs, filenames in items: for d in dirs: print(d) harvest = DaisyDlf(os.path.join(root, d, "DailyP-harvest.dlf")) df = harvest.Data # summere og plot af udbytte i tørstof DM DMharv = df[[ 'crop', 'leaf_' + output, 'stem_' + output, 'sorg_' + output ]] DMG = DMharv.groupby('crop') rg = DMG.get_group(crop_name).sum(axis=1) # Laver et subplot, som derefter bliver det aktive som de næste plt virker på ax = plt.subplot(3, 2, index) index += 1 df22 = pd.DataFrame([rg]).T df22.columns = [crop_name] df2 = df22.loc['2006-1-1':'2011-1-1', :] # Vil gerne plott målt mod simuleret output - først et plot for hver id - og så alle samlet. #Udvælger en ny dataframe med data hvor ID = d. Det samme som tidligere blev gjort i loop #Group og tag gennemsnit s1 = xl.loc[xl['id'] == d] meas = (s1.groupby(s1.index)['grassDM'].mean(), s1.groupby(s1.index)['cloverDM'].mean(), s1.groupby(s1.index)['grassN'].mean(), s1.groupby(s1.index)['cloverN'].mean()) # Samler en dataframe med målt og simulert ms = df2.join(meas[0]) ms = ms.join(meas[1]) ms = ms.join(meas[2]) ms = ms.join(meas[3]) rmse_val += rmse(ms[m_cropname], ms[crop_name]) rs = str(round(rmse_val, 2)) eva = ('RMSE =' + (rs)) if makeplots: plt.scatter(ms[m_cropname], ms[crop_name], marker='x', c='black', s=15) plt.title(d + '-Clover', position=(0.6, 0.9), fontweight="bold", fontsize=8) ax.set(ylabel=('simulated (t DM/ha)'), xlabel='measured') #ax.set(xlim=(0,4), ylim=(0,4)) ax.plot([0, 1], [0, 1], transform=ax.transAxes, c='black', linestyle='--') plt.text(0.1, 3.5, eva) plt.tight_layout() if makeplots: fig.savefig("Clover_DM.pdf", bbox_inches='tight') return (rmse_val)
@author: sdf945 """ from Daisy import DaisyDlf, DaisyModel import matplotlib.pyplot as plt import numpy as np import datetime as datetime dm= DaisyModel (r'I:\SCIENCE-PLEN-PESTCAST\1_Validation track\DFF\Silstrup\1\Water_Field_Weekly.dlf') sys.path.append(r'h:\Documents\PyDaisy') from pydaisy.Daisy import * dlf = DaisyDlf(r'h:\Documents\PyDaisy\Projects\STYR-N\IND_2_4\DailyP-harvest.dlf') folder = r'I:\SCIENCE-PLEN-PESTCAST\1_Validation track\DFF\Silstrup\6' #Diflufenican leaching result_df_week = DaisyDlf(folder+'\Water_Field_Weekly.dlf') result_dif = DaisyDlf(folder+'\weekly_soil_diflufenican.dlf') matrixflow = result_df_week.Data.values[:,6] bioporeflow = result_df_week.Data.values[:,7] drainflow = matrixflow + bioporeflow matrixleaching = result_dif.Data.values[:,7] bioporeleaching = result_dif.Data.values[:,8] totalleaching = matrixleaching + bioporeleaching