Esempio n. 1
0
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
Esempio n. 3
0
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)
Esempio n. 4
0
@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