Quickstart

derevo Framework quick start guide

How to use the derevo library

  • Step 1. Import needed modules (example package can be found in the project repository).

from derevo import Plant, Territory
from derevo import enumerations as d_enum
from derevo import get_compositions

from example.data_collection import (
    collect_cohabitations,
    collect_light_polygons,
    collect_limitation_polygons,
    collect_plants,
    collect_plants_dataframe,
    collect_plants_suitable_for_light,
    collect_plants_with_limitation_resistance,
    collect_species_in_parks,
)
from derevo.models.cohabitation import CohabitationType, GeneraCohabitation
  • Step 2. Format collected plants information into the list of Plant classes.

plants_list: list[Plant] = [
    Plant(
        name_ru="Название растения",
        name_latin="latin name",
        genus="Род растения",
        life_form="Жизненная форма",
        limitation_factors_resistances={
            d_enum.LimitationFactor.FLOODING: d_enum.ToleranceType.NEGATIVE,
            d_enum.LimitationFactor.GAS_POLLUTION: d_enum.ToleranceType.NEUTRAL,
        },
        humidity_preferences={
            d_enum.HumidityType.HIGH: d_enum.ToleranceType.NEGATIVE,
            d_enum.HumidityType.NORMAL: d_enum.ToleranceType.POSITIVE,
        },
        light_preferences={
            d_enum.LightType.LIGHT: d_enum.ToleranceType.POSITIVE,
        },
        usda_zone_preferences={
            d_enum.UsdaZone.USDA2: d_enum.ToleranceType.NEGATIVE,
            d_enum.UsdaZone.USDA3: d_enum.ToleranceType.NEUTRAL,
            d_enum.UsdaZone.USDA4: d_enum.ToleranceType.POSITIVE,
            d_enum.UsdaZone.USDA5: d_enum.ToleranceType.POSITIVE,
            d_enum.UsdaZone.USDA6: d_enum.ToleranceType.NEUTRAL,
            d_enum.UsdaZone.USDA7: d_enum.ToleranceType.NEGATIVE,
        },
        is_invasive=False,
    ),
]
plants_present: list[Plant] = []
  • Step 3. Create Territory information class.

territory_info = Territory(
    usda_zone=d_enum.UsdaZone.USDA5,
    limitation_factors=[d_enum.LimitationFactor.WINDINESS],
    humidity_types=[d_enum.HumidityType.NORMAL, d_enum.HumidityType.LOW],
    light_types=[d_enum.LightType.LIGHT, d_enum.LightType.DARKENED],
    soil_fertility_types=[d_enum.FertilityType.FERTIL, d_enum.FertilityType.SLIGHTLY_FERTIL],
)
  • Step 4. Form a list of GeneraCohabitation classes from your data.

cohabitation_attributes = [
    GeneraCohabitation("Род растения", "Род растения", CohabitationType.POSITIVE),
    GeneraCohabitation("Род растения", "Другой род растения", CohabitationType.NEGATIVE),
]
  • Step 5. Get available plants cohabitations for the given area.

composition_plants = get_compositions(
    plants_available=plants_list,
    cohabitation_attributes=cohabitation_attributes,
    territory=territory_info,
    plants_present=plants_present,
)