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
def test_transport_rain_two_metamers(interleaf=10., density = 350., layer_thickness=0.01, leaf_sectors = 7, density_emitted=1e5, by_sector = False, display_scene = False): g, domain_area, domain, convunit = adel_two_metamers_stand(leaf_sectors=leaf_sectors, density=density, interleaf=interleaf, leaf_length=20, leaf_width=1, Einc=0) if display_scene: scene = plot3d(g) Viewer.display(scene) weather = sample_weather_with_rain() leaves = get_leaf_ids(g) DU = emission_source(g, leaves, domain_area=domain_area, density_emitted=density_emitted) transporter = PopDropsTransport(domain=domain, domain_area=domain_area, dh=layer_thickness, convUnit=convunit, group_dus=True) if sum(DU.values())>0: deposits = transporter.disperse(g, DU, weather) return count_du_source_target(deposits, leaves, by_sector=False)
def testdyn(nplants=1,start = 100,step = 50, nstep=30,dec=10,az=0): from time import sleep pars, d = adelR(nplants,start) pos = [(i*dec,0,0) for i in range(nplants)] g=mtg_factory(d,adel_metamer, leaf_sectors=1,leaf_db=leafdb, stand = [(pos[i],az) for i in range(nplants)]) g=mtg_interpreter(g) time = start oldcanopy = RunAdel(time,pars) for i in range(nstep): s = plot3d(g) Viewer.display(s) #sleep(2) time = start + (i + 1) * step canopy = RunAdel(time,pars) mtg_update_from_table(g, canopy, oldcanopy) g=mtg_interpreter(g) oldcanopy = canopy return g,d # TO DO : senescence leaf shrink # tester secteurs > 1 #df=DataFrame(d) #df.Lv #df.ix[1:7,6:9] #df[['Gl','Gv','Ll','Lv','Lr','L_shape']] # import numpy as np # from alinea.popdrops.Rain import get_area_and_normal # a1,_=get_area_and_normal(g1.property('geometry')) # a1 = dict(((k,np.sum(v)) for k,v in a1.iteritems()))
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
def newmtg(canopy,dec=10,az=0): from alinea.adel.newmtg import mtg_factory, adel_metamer from alinea.adel.mtg_interpreter import mtg_interpreter, plot3d g=mtg_factory(canopy,adel_metamer, leaf_sectors=1,leaf_db=leafdb, stand = [((dec,0,0),az)]) g=mtg_interpreter(g) s = plot3d(g) return g,s
def newmtg(canopy, dec=10, az=0): from alinea.adel.newmtg import mtg_factory, adel_metamer from alinea.adel.mtg_interpreter import mtg_interpreter, plot3d g = mtg_factory(canopy, adel_metamer, leaf_sectors=1, leaf_db=leafdb, stand=[((dec, 0, 0), az)]) g = mtg_interpreter(g) s = plot3d(g) return g, s
def scene(g, property=None): if property: g = colormap(g, property, cmap='jet', lognorm=True) colored = g.property('color') colors = { vid: colored.get(vid, colored.get(g.complex(vid), [0, 0, 0])) for vid in g.vertices(scale=g.max_scale()) } else: colors = None s = plot3d(g, colors=colors ) # use the one of openalea.plantframe.color instead ? return s
def ground_cover(g, domain, camera = {'type':'perspective', 'distance':200., 'fov':50., 'azimuth':0, 'zenith':0.}, image_width = 4288, image_height = 2848, getImages=False, replicate=None): """ compute ground cover based on is_green/not_green property of g """ from alinea.adel.mtg_interpreter import plot3d colors_def = {'green':[0, 255, 0], 'senescent' : [255, 0, 0]} greeness = g.property('is_green') colors = {k:colors_def['green'] if greeness[k] else colors_def['senescent'] for k in greeness} scene = plot3d(g, colors=colors) gc, im, box = color_ground_cover(scene, domain, colors_def = colors_def, camera = camera, image_width = image_width, image_height = image_height, getImages=getImages, replicate=replicate) return gc, im, box
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
def testdyn(nplants=1, start=100, step=50, nstep=30, dec=10, az=0): from time import sleep pars, d = adelR(nplants, start) pos = [(i * dec, 0, 0) for i in range(nplants)] g = mtg_factory(d, adel_metamer, leaf_sectors=1, leaf_db=leafdb, stand=[(pos[i], az) for i in range(nplants)]) g = mtg_interpreter(g) time = start oldcanopy = RunAdel(time, pars) for i in range(nstep): s = plot3d(g) Viewer.display(s) #sleep(2) time = start + (i + 1) * step canopy = RunAdel(time, pars) mtg_update_from_table(g, canopy, oldcanopy) g = mtg_interpreter(g) oldcanopy = canopy return g, d # TO DO : senescence leaf shrink # tester secteurs > 1 #df=DataFrame(d) #df.Lv #df.ix[1:7,6:9] #df[['Gl','Gv','Ll','Lv','Lr','L_shape']] # import numpy as np # from alinea.popdrops.Rain import get_area_and_normal # a1,_=get_area_and_normal(g1.property('geometry')) # a1 = dict(((k,np.sum(v)) for k,v in a1.iteritems()))
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
def ground_cover( g, domain, camera={ 'type': 'perspective', 'distance': 200., 'fov': 50., 'azimuth': 0, 'zenith': 0. }, image_width=4288, image_height=2848, getImages=False, replicate=None): """ compute ground cover based on is_green/not_green property of g """ from alinea.adel.mtg_interpreter import plot3d colors_def = {'green': [0, 255, 0], 'senescent': [255, 0, 0]} greeness = g.property('is_green') colors = { k: colors_def['green'] if greeness[k] else colors_def['senescent'] for k in greeness } scene = plot3d(g, colors=colors) gc, im, box = color_ground_cover(scene, domain, colors_def=colors_def, camera=camera, image_width=image_width, image_height=image_height, getImages=getImages, replicate=replicate) return gc, im, box
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
# extract_leaves from alinea.adel.wheat import extract_wheat db = extract_wheat.extract_leaf_info(pj(DATA_IN_DIR, 'laminaCurv.RData'), pj(DATA_IN_DIR, 'lamina2D.RData')) # fit leaves from alinea.adel.fit import fit db, discard = fit.fit_leaves(db, NUMBER_OF_LONGITUDINAL_DIVISIONS) # set the rotation angle of the plant on itself. Permits to randomize the orientation of each leaf. stand = zip(positions, [0 for i in range(len(positions))]) g = mtg_factory(metamers_parameters.to_dict('list'), adel_metamer, leaf_db = db, stand = stand) #add geometry g = mtg_interpreter(g) ## plot (uncomment the next 2 lines to plot the 3D model) scene = plot3d(g) Viewer.display(scene) # call caribu from alinea.caribu.caribu_star import caribu_star geom = g.property('geometry') star, exposed_area = caribu_star(geom, directions = NUMBER_OF_DIRECTIONS, domain = domain, convUnit = convUnit)#cf caribu_star doc for output interpretation caribu_out = pandas.DataFrame([(adel_label(g,vid), star[vid], exposed_area[vid]) for vid in star], columns=['adel_label', 'star', 'exposed_area']) caribu_out_filepath = pj(DATA_OUT_DIR, 'caribu_out' + str(angle_of_incidence) + '.csv') print 'Save caribu output to', caribu_out_filepath caribu_out.to_csv(caribu_out_filepath, na_rep='NA', index=False) # Calculate the star for each class of metamers (metamer1, metamer2, metamer3, etc). # Star is "ratio viewed area / area". It takes into consideration the angles of
pj(DATA_IN_DIR, 'lamina2D.RData')) # fit leaves from alinea.adel.fit import fit db, discard = fit.fit_leaves(db, NUMBER_OF_LONGITUDINAL_DIVISIONS) # set the rotation angle of the plant on itself. Permits to randomize the orientation of each leaf. stand = zip(positions, [0 for i in range(len(positions))]) g = mtg_factory(metamers_parameters.to_dict('list'), adel_metamer, leaf_db=db, stand=stand) #add geometry g = mtg_interpreter(g) ## plot (uncomment the next 2 lines to plot the 3D model) scene = plot3d(g) Viewer.display(scene) # call caribu from alinea.caribu.caribu_star import caribu_star geom = g.property('geometry') star, exposed_area = caribu_star( geom, directions=NUMBER_OF_DIRECTIONS, domain=domain, convUnit=convUnit) #cf caribu_star doc for output interpretation caribu_out = pandas.DataFrame( [(adel_label(g, vid), star[vid], exposed_area[vid]) for vid in star], columns=['adel_label', 'star', 'exposed_area']) caribu_out_filepath = pj(DATA_OUT_DIR,
def adel_scene_node(g): return plot3d(g)