Пример #1
0
 def __call__(self, inputs):
     package, glob, filename = inputs
     if package and filename:
         data = systemnodes.get_data(glob, package)
         self._output = data.get(filename)
         return (self._output,)
     else:
         return (self._output,)
Пример #2
0
 def __call__(self, inputs):
     package, glob, filename = inputs
     if package and filename:
         data = systemnodes.get_data(glob, package)
         self._output = data.get(filename)
         return (self._output, )
     else:
         return (self._output, )
 def update_filenames_combobox(self):
     ''' Update the combo box with the filenames '''
     package = self.node.get_input(0)
     globpattern = self.node.get_input(1)
     if self.updating or package is None or globpattern is None: return
     self.updating = True
     self.filenames_combobox.clear()
     self.filename2filepath_mapping.clear()
     try:
         __import__(package, fromlist=[''])
     except:
         pass
     else:
         data = systemnodes.get_data(globpattern, package)
         self.filename2filepath_mapping.update(data)
         self.filenames_combobox.addItems(self.filename2filepath_mapping.keys())
     self.updating = False
 def update_filenames_combobox(self):
     ''' Update the combo box with the filenames '''
     package = self.node.get_input(0)
     globpattern = self.node.get_input(1)
     if self.updating or package is None or globpattern is None: return
     self.updating = True
     self.filenames_combobox.clear()
     self.filename2filepath_mapping.clear()
     try:
         __import__(package, fromlist=[''])
     except:
         pass
     else:
         data = systemnodes.get_data(globpattern, package)
         self.filename2filepath_mapping.update(data)
         self.filenames_combobox.addItems(
             self.filename2filepath_mapping.keys())
     self.updating = False
Пример #5
0
def calculate_LAI_TC_ViaCaribu(stand_MTG,
                               pattern=None,
                               thermal_time=0,
                               output_directory=''):
    # light string
    from alinea.caribu import lightString
    directional_vector = lightString.lightString(1.0, 0.0, 46.0)
    # par4.opt
    from openalea.core import pkgmanager
    pm = pkgmanager.PackageManager()
    pm.init(verbose=False)
    from openalea.core.system import systemnodes
    opt_filepath = systemnodes.get_data('par4.opt',
                                        'alinea.caribu.data').values().pop()
    # read
    from openalea.file import files
    opt_str = files.FileRead()(opt_filepath)
    # CaribuScene
    from alinea.caribu import CaribuScene_nodes
    caribu_scene = CaribuScene_nodes.newCaribuScene(stand_MTG,
                                                    directional_vector,
                                                    pattern, opt_str)[0]
    # addsoil_2
    from alinea.adel.macro import addsoil_2
    caribu_scene = addsoil_2.addsoil_2(caribu_scene, 2.0)
    # Caribu
    caribu_scene, energy = CaribuScene_nodes.runCaribu(caribu_scene, True, {
        'SphereDiameter': 0.5,
        'Nz': 5,
        'Zmax': 2,
        'keepFF': False
    }, True)
    # LIE
    from alinea.caribu import selectOutput
    canestra_output_1 = selectOutput.selectOutput(energy, 'Opt')[0]
    canestra_output_2 = selectOutput.selectOutput(energy, 'Einc')[0]
    from alinea.caribu import filterby
    filtered = filterby.filterby(canestra_output_1, canestra_output_2,
                                 lambda x: x == 0.0)[0]
    total_soil = sum(filtered)
    total_incident = CaribuScene_nodes.getIncidentEnergy(caribu_scene)[2]
    efficience = (total_incident - total_soil) / float(total_incident)
    # LAIg
    canestra_output_1 = selectOutput.selectOutput(energy, 'Opt')[0]
    canestra_output_2 = selectOutput.selectOutput(energy, 'Area')[0]
    soil_filtered = filterby.filterby(canestra_output_1, canestra_output_2,
                                      lambda x: x == 0.0)[0]
    soil_area = sum(soil_filtered)

    canestra_output_1 = selectOutput.selectOutput(energy, 'Opt')[0]
    canestra_output_2 = selectOutput.selectOutput(energy, 'Area')[0]
    canopy_triangles_filtered = filterby.filterby(canestra_output_1,
                                                  canestra_output_2,
                                                  lambda x: x > 0.0)[0]
    canopy_triangles_area = sum(canopy_triangles_filtered)

    canestra_output_1 = selectOutput.selectOutput(energy, 'Opt')[0]
    canestra_output_2 = selectOutput.selectOutput(energy, 'Area')[0]
    green_triangles_filtered = filterby.filterby(canestra_output_1,
                                                 canestra_output_2,
                                                 lambda x: x == 1.0)[0]
    green_triangles_area = sum(green_triangles_filtered)

    canestra_output_1 = selectOutput.selectOutput(energy, 'Opak')[0]
    canestra_output_2 = selectOutput.selectOutput(energy, 'Area')[0]
    opak_leaves_filtered = filterby.filterby(canestra_output_1,
                                             canestra_output_2,
                                             lambda x: x > 0.0)[0]
    opak_leaves_area = sum(opak_leaves_filtered)

    canestra_output_1 = selectOutput.selectOutput(energy, 'Opak')[0]
    canestra_output_2 = selectOutput.selectOutput(energy, 'Opt')[0]
    opak_opt_filtered = filterby.filterby(canestra_output_1, canestra_output_2,
                                          lambda x: x > 0.0)[0]

    LAI = opak_leaves_area / float(soil_area)
    from alinea.adel.macro import AND
    LAIg = sum(AND.AND(opak_leaves_filtered,
                       opak_opt_filtered)[0]) / float(soil_area)
    CAI = (canopy_triangles_area / float(soil_area) - LAI) / 2 + LAI
    CAIg = (green_triangles_area / float(soil_area) - LAIg) / 2 + LAIg

    # genFilepath
    import os
    LAI_PAI_path = os.path.join(output_directory,
                                '%s%s' % ('_caribuoutput_', '.csv'))

    # Write_LAI_PAI
    from alinea.adel.macro import write_LAI_PAI
    LAI_PAI_path = write_LAI_PAI.Write_LAI_PAI(thermal_time, efficience, CAI,
                                               CAIg, LAI, LAIg, LAI_PAI_path)

    return LAI_PAI_path,