Esempio n. 1
0
def update_plot(g):
    # Compute severity by leaf
    severity_by_leaf = compute_severity_by_leaf(g, label='LeafElement')
    set_property_on_each_id(g,
                            'severity',
                            severity_by_leaf,
                            label='LeafElement')

    # Visualization
    g = alep_colormap(g,
                      'severity',
                      cmap=green_yellow_red(levels=100),
                      lognorm=False,
                      zero_to_one=False,
                      vmax=100)

    leaves = get_leaves(g, label='LeafElement')
    pos_sen = g.property('position_senescence')
    for leaf in leaves:
        if pos_sen[leaf] == 0.:
            g.node(leaf).color = (157, 72, 7)

    scene = plot3d(g)
    Viewer.display(scene)
    return scene
Esempio n. 2
0
def update_plot(g):
    from alinea.alep.architecture import set_property_on_each_id
    from alinea.alep.disease_outputs import compute_severity_by_leaf
    from alinea.adel.mtg_interpreter import plot3d
    from openalea.plantgl.all import Viewer

    # Compute severity by leaf
    severity_by_leaf = compute_severity_by_leaf(g, label='LeafElement')
    set_property_on_each_id(g,
                            'severity',
                            severity_by_leaf,
                            label='LeafElement')

    # Visualization
    g = alep_colormap(g,
                      'severity',
                      cmap=green_yellow_red(levels=100),
                      lognorm=False,
                      zero_to_one=False,
                      vmax=100)

    leaves = get_leaves(g, label='LeafElement')
    pos_sen = g.property('position_senescence')
    for leaf in leaves:
        if pos_sen[leaf] == 0.:
            g.node(leaf).color = (157, 72, 7)

    scene = plot3d(g)
    Viewer.display(scene)
    return scene
Esempio n. 3
0
    def view_distri_layers(self, g, nb_dispersal_units = 1e5, vmax = None,
                           position_source = 3./5, return_df=False):
        from alinea.alep.architecture import set_property_on_each_id
        from alinea.alep.alep_color import alep_colormap, green_yellow_red
        from alinea.alep.disease_outputs import plot3d_transparency
        from openalea.plantgl.all import Viewer
        import matplotlib.pyplot as plt
        import pandas as pd
        # Compute severity by leaf
        self.leaves_in_grid(g)
        layers = self.layers.keys()
        layers.sort()        
        layer = layers[int(position_source*len(layers))]
        if len(self.layers[layer])>0:
            leaf = self.layers[layer][0]
        else:
            non_empty = {k:v for k,v in self.layers.iteritems() if len(v)>0}
            leaf = self.layers[min(non_empty.keys(), key=lambda k:abs(k-layer))][0]
        deposits = {k:sum([du.nb_dispersal_units for du in v]) for k,v in 
                    self.disperse(g, dispersal_units = {leaf : nb_dispersal_units}).iteritems()}  
        set_property_on_each_id(g, 'nb_dispersal_units', deposits)
    
        # Visualization
        if vmax is None:
            vmax = 2*max(deposits.values())/3
        g = alep_colormap(g, 'nb_dispersal_units', cmap=green_yellow_red(), 
                          lognorm=False, zero_to_one=False, 
                          vmax = vmax)
        d = [np.arange(vmax)]
        fig, ax = plt.subplots()
        ax.imshow(d, cmap = green_yellow_red())

        transp = {vid:0. for k,v in self.layers.iteritems() for vid in v}
        set_property_on_each_id(g, 'transparency', transp)   
        for id in g:
            if not id in deposits:
                g.node(id).color = (0,0,0)
                g.node(id).transparency = 0.7
            elif deposits[id]==0.:
                g.node(id).color = (0,0,0)
                g.node(id).transparency = 0.7
            else:
                g.node(id).transparency = 0.                      
        scene = plot3d_transparency(g)
        Viewer.display(scene)
        
        if return_df==True:        
            depo_layer = {k:sum([deposits[vid] for vid in v if vid in deposits])
                            for k,v in self.layers.iteritems()}
            df = pd.DataFrame([[k,v] for k, v in depo_layer.iteritems()])
            df = df.sort(0)
            df[2] = df[1]/df[1].sum()
            fig, ax = plt.subplots()
            ax.plot(df[2], df[0], 'k')
            ax.set_ylabel('Height', fontsize = 16)
            ax.set_xlabel('Proportion of deposits', fontsize = 16)
            return df
Esempio n. 4
0
def update_plot(g):
    # Compute severity by leaf
    severity_by_leaf = compute_severity_by_leaf(g, label = 'LeafElement')
    set_property_on_each_id(g, 'severity', severity_by_leaf, label = 'LeafElement')

    # Visualization
    g = alep_colormap(g, 'severity', cmap=green_yellow_red(levels=100),
                      lognorm=False, zero_to_one=False, vmax=100)

    leaves = get_leaves(g, label='LeafElement')
    pos_sen = g.property('position_senescence')
    for leaf in leaves:
        if pos_sen[leaf]==0.:
            g.node(leaf).color = (157, 72, 7)   
    scene = plot3d(g)
    Viewer.display(scene)
    return scene
Esempio n. 5
0
    def view_distri_layers(self, g, density_dispersal_units=1000., vmax=None):
        from alinea.alep.architecture import set_property_on_each_id
        from alinea.alep.alep_color import alep_colormap, green_yellow_red
        from alinea.alep.disease_outputs import plot3d_transparency
        from openalea.plantgl.all import Viewer
        import matplotlib.pyplot as plt
        # Compute severity by leaf
        nb_dus = density_dispersal_units * self.domain_area
        deposits = {
            k: sum([du.nb_dispersal_units for du in v])
            for k, v in self.contaminate(g, nb_dus).iteritems()
        }
        set_property_on_each_id(g, 'nb_dispersal_units', deposits)

        # Visualization
        if vmax is None:
            vmax = 2 * max(deposits.values()) / 3
        g = alep_colormap(g,
                          'nb_dispersal_units',
                          cmap=green_yellow_red(),
                          lognorm=False,
                          zero_to_one=False)

        d = [np.arange(vmax)]
        fig, ax = plt.subplots()
        ax.imshow(d, cmap=green_yellow_red())

        geometries = g.property('geometry')
        leaves = get_leaves(g, label='LeafElement')
        leaves = [l for l in leaves if l in geometries]
        transp = {vid: 0. for k, v in self.layers.iteritems() for vid in v}
        set_property_on_each_id(g, 'transparency', transp)
        for id in g:
            if not id in deposits:
                g.node(id).color = (1, 1, 1)
                g.node(id).transparency = 0.7
            elif deposits[id] == 0.:
                g.node(id).color = (1, 1, 1)
                g.node(id).transparency = 0.7
            else:
                g.node(id).transparency = 0.
        scene = plot3d_transparency(g)
        Viewer.display(scene)
Esempio n. 6
0
    def plot_layers(self, g):
        from alinea.alep.architecture import set_property_on_each_id
        from alinea.alep.alep_color import alep_colormap
        from alinea.alep.disease_outputs import plot3d_transparency
        from openalea.plantgl.all import Viewer
        # Compute severity by leaf
        self.leaves_in_grid(g)
        layers = self.layers
        layer_by_leaf = {vid:k for k,v in layers.iteritems() for vid in v}
        set_property_on_each_id(g, 'height', layer_by_leaf)
    
        # Visualization
        g = alep_colormap(g, 'height', cmap='prism', 
                          lognorm=False, zero_to_one=False)

        geometries = g.property('geometry') 
        leaves = get_leaves(g, label='LeafElement')
        leaves = [l for l in leaves if l in geometries] 
        transp = {vid:0. for k,v in layers.iteritems() for vid in v}
        set_property_on_each_id(g, 'transparency', transp)                         
        scene = plot3d_transparency(g)
        Viewer.display(scene)
Esempio n. 7
0
def update_plot(g):
    from alinea.alep.architecture import set_property_on_each_id
    from alinea.alep.disease_outputs import compute_severity_by_leaf
    from alinea.adel.mtg_interpreter import plot3d
    from openalea.plantgl.all import Viewer

    # Compute severity by leaf
    severity_by_leaf = compute_severity_by_leaf(g, label = 'lf')
    set_property_on_each_id(g, 'severity', severity_by_leaf, label = 'lf')
                       
    # Visualization
    g = alep_colormap(g, 'severity', cmap=green_yellow_red(levels=100),
                      lognorm=False, zero_to_one=False, vmax=100)
    brown = (100,70,30)
    trunk_ids = [n for n in g if g.label(n).startswith('tronc')]
    for id in trunk_ids:
        trunk = g.node(id)
        trunk.color = brown
    
    scene = plot3d(g)
    Viewer.display(scene)
    return scene
Esempio n. 8
0
def update_plot(g):
    from alinea.alep.architecture import set_property_on_each_id
    from alinea.alep.disease_outputs import compute_severity_by_leaf
    from alinea.adel.mtg_interpreter import plot3d
    from openalea.plantgl.all import Viewer

    # Compute severity by leaf
    severity_by_leaf = compute_severity_by_leaf(g, label = 'LeafElement')
    set_property_on_each_id(g, 'severity', severity_by_leaf, label = 'LeafElement')

    # Visualization
    g = alep_colormap(g, 'severity', cmap=green_yellow_red(levels=100),
                      lognorm=False, zero_to_one=False, vmax=100)

    leaves = get_leaves(g, label='LeafElement')
    pos_sen = g.property('position_senescence')
    for leaf in leaves:
        if pos_sen[leaf]==0.:
            g.node(leaf).color = (157, 72, 7)

    scene = plot3d(g)
    Viewer.display(scene)
    return scene
Esempio n. 9
0
def update_plot(g, leaf_source):
    # Compute severity by leaf
    nb_dus_by_leaf = count_dispersal_units_by_leaf(g, label = 'LeafElement')
    set_property_on_each_id(g, 'nb_dus', nb_dus_by_leaf, label = 'LeafElement')
    
    # Visualization
    g = alep_colormap(g, 'nb_dus', cmap=green_yellow_red(levels=1000),
                      lognorm=False, zero_to_one=False, vmax=25)

    # pos_sen = g.property('position_senescence')
    for id in g:
        if not id in nb_dus_by_leaf:
            # g.node(id).color = (255,255,255)
            # g.node(id).color = (113,113,113)
            # g.node(id).transparency = 0.9
            g.node(id).transparency = 0.
        else:
            g.node(id).transparency = 0.

    g.node(leaf_source).color = (230, 62, 218)
    g.node(leaf_source).transparency = 0.
    scene = plot3d(g)
    Viewer.display(scene)
    return scene
""" Gather different strategies for modeling dispersal of fungus propagules.
Esempio n. 11
0
def plot_severity_rust_by_leaf(g, senescence=True,
                                transparency=None, 
                                label='LeafElement'):
    """ Display the MTG with colored leaves according to disease severity 
    
    Parameters
    ----------
    g: MTG
        MTG representing the canopy
    senescence: bool
        True if senescence must be displayed, False otherwise
    transparency: float[0:1]
        Transparency of the part of the MTG without lesion
    label: str
        Label of the part of the MTG concerned by the calculation
        
    Returns
    -------
    scene:
        Scene containing the MTG attacked by the disease
    
    """
    from alinea.alep.architecture import set_property_on_each_id, get_leaves
    from alinea.alep.alep_color import alep_colormap, green_yellow_red
    from alinea.adel.mtg_interpreter import plot3d
    from alinea.alep.disease_outputs import plot3d_transparency
    from openalea.plantgl.all import Viewer
    # Visualization
    lesions = g.property('lesions')
    leaves = get_leaves(g, label=label)
    severity_by_leaf = {}
    for lf in leaves:
        if lf in lesions:
            leaf = g.node(lf)
            severity_by_leaf[lf] = sum([l.surface for l in leaf.lesions])*100./leaf.area if leaf.area>0 else 0.
        else:
            severity_by_leaf[lf] = 0.
    set_property_on_each_id(g, 'severity', severity_by_leaf, label=label)
    g = alep_colormap(g, 'severity', cmap=green_yellow_red(levels=100),
                      lognorm=False, zero_to_one=False, vmax=100)

    if senescence==True:
        leaves = get_leaves(g, label=label)
        sen_lengths = g.property('senesced_length')
        green_lengths = g.property('green_length')
        for leaf in leaves:
            if sen_lengths[leaf]>0. and round(green_lengths[leaf],15)==0.:
                g.node(leaf).color = (157, 72, 7)
    
    if transparency!=None:
        for id in g:           
            if not id in severity_by_leaf:
                g.node(id).color = (255,255,255)
                g.node(id).transparency = 0.9
            elif severity_by_leaf[id]==0.:
                g.node(id).color = (255,255,255)
                g.node(id).transparency = transparency
            else:
                g.node(id).transparency = 0.
        scene = plot3d_transparency(g)
    else:
        scene = plot3d_transparency(g)
    Viewer.display(scene)
    return scene
Esempio n. 12
0
""" Gather different strategies for modeling dispersal of fungus propagules.
Esempio n. 13
0
def plot_severity_rust_by_leaf(g,
                               senescence=True,
                               transparency=None,
                               label='LeafElement'):
    """ Display the MTG with colored leaves according to disease severity 
    
    Parameters
    ----------
    g: MTG
        MTG representing the canopy
    senescence: bool
        True if senescence must be displayed, False otherwise
    transparency: float[0:1]
        Transparency of the part of the MTG without lesion
    label: str
        Label of the part of the MTG concerned by the calculation
        
    Returns
    -------
    scene:
        Scene containing the MTG attacked by the disease
    
    """
    from alinea.alep.architecture import set_property_on_each_id, get_leaves
    from alinea.alep.alep_color import alep_colormap, green_yellow_red
    from alinea.adel.mtg_interpreter import plot3d
    from alinea.alep.disease_outputs import plot3d_transparency
    from openalea.plantgl.all import Viewer
    # Visualization
    lesions = g.property('lesions')
    leaves = get_leaves(g, label=label)
    severity_by_leaf = {}
    for lf in leaves:
        if lf in lesions:
            leaf = g.node(lf)
            severity_by_leaf[lf] = sum([
                l.surface for l in leaf.lesions
            ]) * 100. / leaf.area if leaf.area > 0 else 0.
        else:
            severity_by_leaf[lf] = 0.
    set_property_on_each_id(g, 'severity', severity_by_leaf, label=label)
    g = alep_colormap(g,
                      'severity',
                      cmap=green_yellow_red(levels=100),
                      lognorm=False,
                      zero_to_one=False,
                      vmax=100)

    if senescence == True:
        leaves = get_leaves(g, label=label)
        sen_lengths = g.property('senesced_length')
        green_lengths = g.property('green_length')
        for leaf in leaves:
            if sen_lengths[leaf] > 0. and round(green_lengths[leaf], 15) == 0.:
                g.node(leaf).color = (157, 72, 7)

    if transparency != None:
        for id in g:
            if not id in severity_by_leaf:
                g.node(id).color = (255, 255, 255)
                g.node(id).transparency = 0.9
            elif severity_by_leaf[id] == 0.:
                g.node(id).color = (255, 255, 255)
                g.node(id).transparency = transparency
            else:
                g.node(id).transparency = 0.
        scene = plot3d_transparency(g)
    else:
        scene = plot3d_transparency(g)
    Viewer.display(scene)
    return scene