openforis-whisp 0.1.0a7__py3-none-any.whl → 1.0.0a1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -100,9 +100,53 @@ def fdap_forest_prep():
100
100
  fdap_forest = fdap_forest_raw.gt(0.75)
101
101
  return fdap_forest.rename("Forest_FDaP")
102
102
 
103
-
104
- ############plantation data
105
-
103
+ #########################primary forest
104
+ # EUFO JRC Global forest type - primary
105
+ def gft_primary_prep():
106
+ gft_raw = ee.ImageCollection("JRC/GFC2020_subtypes/V0").mosaic()
107
+ gft_primary = gft_raw.eq(10)
108
+ return gft_primary.rename("GFT_primary")
109
+
110
+ # Intact Forest Landscape 2020
111
+ def IFL_2020_prep():
112
+ IFL_2020 = ee.Image('users/potapovpeter/IFL_2020')
113
+ return IFL_2020.rename("IFL_2020")
114
+
115
+ # European Primary Forest Dataset
116
+ def EPFD_prep():
117
+ EPFD=ee.FeatureCollection("HU_BERLIN/EPFD/V2/polygons")
118
+ EPFD_binary = ee.Image().paint(EPFD,1)
119
+ return EPFD_binary.rename('European_Primary_Forest')
120
+
121
+ # EUFO JRC Global forest type - naturally regenerating planted/plantation forests
122
+ def gft_nat_reg_prep():
123
+ gft_raw = ee.ImageCollection("JRC/GFC2020_subtypes/V0").mosaic()
124
+ gft_nat_reg = gft_raw.eq(1)
125
+ return gft_nat_reg.rename("GFT_naturally_regenerating")
126
+
127
+
128
+ #########################planted and plantation forests
129
+
130
+ # EUFO JRC Global forest type - planted/plantation forests
131
+ def gft_plantation_prep():
132
+ gft_raw = ee.ImageCollection("JRC/GFC2020_subtypes/V0").mosaic()
133
+ gft_plantation = gft_raw.eq(20)
134
+ return gft_plantation.rename("GFT_planted_plantation")
135
+
136
+ def IIASA_planted_prep():
137
+ iiasa = ee.Image('projects/sat-io/open-datasets/GFM/FML_v3-2');
138
+ iiasa_PL = iiasa.eq(31).Or(iiasa.eq(32))
139
+ return iiasa_PL.rename('IIASA_planted_plantation')
140
+
141
+ #########################TMF regrowth in 2023
142
+ def tmf_regrowth_prep():
143
+ # Load the TMF Degradation annual product
144
+ TMF_AC=ee.ImageCollection('projects/JRC/TMF/v1_2023/AnnualChanges').mosaic()
145
+ TMF_AC_2023=TMF_AC.select('Dec2023')
146
+ Regrowth_TMF = TMF_AC_2023.eq(4)
147
+ return Regrowth_TMF.rename('TMF_regrowth_2023')
148
+
149
+ ############tree crops
106
150
 
107
151
  # TMF_plant (plantations in 2020)
108
152
  def jrc_tmf_plantation_prep():
@@ -165,6 +209,17 @@ def fdap_palm_prep():
165
209
  )
166
210
  return fdap_palm.rename("Oil_palm_FDaP")
167
211
 
212
+ def fdap_palm_2023_prep():
213
+ fdap_palm2020_model_raw = ee.ImageCollection("projects/forestdatapartnership/assets/palm/model_2024a")
214
+ fdap_palm = (
215
+ fdap_palm2020_model_raw
216
+ .filterDate('2023-01-01', '2023-12-31')
217
+ .mosaic()
218
+ .gt(0.83) # Threshold for Oil Palm
219
+
220
+ )
221
+ return fdap_palm.rename("Oil_palm_2023_FDaP")
222
+
168
223
 
169
224
  # Rubber FDaP
170
225
  def fdap_rubber_prep():
@@ -178,6 +233,16 @@ def fdap_rubber_prep():
178
233
  )
179
234
  return fdap_rubber.rename("Rubber_FDaP")
180
235
 
236
+ def fdap_rubber_2023_prep():
237
+ fdap_rubber2020_model_raw = ee.ImageCollection("projects/forestdatapartnership/assets/rubber/model_2024a")
238
+ fdap_rubber = (
239
+ fdap_rubber2020_model_raw
240
+ .filterDate('2023-01-01', '2023-12-31')
241
+ .mosaic()
242
+ .gt(0.93) # Threshold for Rubber
243
+
244
+ )
245
+ return fdap_rubber.rename("Rubber_2023_FDaP")
181
246
 
182
247
  # Cocoa FDaP
183
248
  def fdap_cocoa_prep():
@@ -191,6 +256,16 @@ def fdap_cocoa_prep():
191
256
  )
192
257
  return fdap_cocoa.rename("Cocoa_FDaP")
193
258
 
259
+ def fdap_cocoa_2023_prep():
260
+ fdap_cocoa2020_model_raw = ee.ImageCollection("projects/forestdatapartnership/assets/cocoa/model_2024a")
261
+ fdap_cocoa = (
262
+ fdap_cocoa2020_model_raw
263
+ .filterDate('2023-01-01', '2023-12-31')
264
+ .mosaic()
265
+ .gt(0.5) # Threshold for Cocoa
266
+
267
+ )
268
+ return fdap_cocoa.rename("Cocoa_2023_FDaP")
194
269
 
195
270
  # Cocoa_bnetd
196
271
  def civ_ocs2020_prep():
@@ -212,7 +287,41 @@ def rbge_rubber_prep():
212
287
  .rename("Rubber_RBGE")
213
288
  )
214
289
 
215
-
290
+ ################## seasonal crops
291
+
292
+ #soy 2020 Brazil
293
+ def soy_song_2020_prep():
294
+ return ee.Image('projects/glad/soy_annual_SA/2020').unmask().rename("Soy_Song_2020")
295
+ ##############2023
296
+ # ESRI 2023
297
+ # ESRI 2023 - Tree Cover
298
+ def esri_2023_TC_prep():
299
+ esri_lulc10_raw = ee.ImageCollection("projects/sat-io/open-datasets/landcover/ESRI_Global-LULC_10m_TS")
300
+ esri_lulc10_TC = esri_lulc10_raw.filterDate('2023-01-01', '2023-12-31').mosaic().eq(2)
301
+ return esri_lulc10_TC.rename('ESRI_2023_TC')
302
+
303
+ # ESRI 2023 - Crop
304
+ def esri_2023_crop_prep():
305
+ esri_lulc10_raw = ee.ImageCollection("projects/sat-io/open-datasets/landcover/ESRI_Global-LULC_10m_TS")
306
+ esri_lulc10_crop = esri_lulc10_raw.filterDate('2023-01-01', '2023-12-31').mosaic().eq(5)
307
+ return esri_lulc10_crop.rename('ESRI_2023_crop')
308
+
309
+ # GLC_FCS30D 2022
310
+
311
+ # GLC_FCS30D Tree Cover
312
+ # forest classes + swamp + mangrove / what to do with shrubland?
313
+ def GLC_FCS30D_TC_2022_prep():
314
+ GLC_FCS30D = ee.ImageCollection("projects/sat-io/open-datasets/GLC-FCS30D/annual").mosaic().select(22)
315
+ GLC_FCS30D_TC = (GLC_FCS30D.gte(51)).And(GLC_FCS30D.lte(92)).Or(GLC_FCS30D.eq(181)).Or(GLC_FCS30D.eq(185))
316
+ return GLC_FCS30D_TC.rename('GLC_FCS30D_TC_2022')
317
+
318
+ # GLC_FCS30D crop
319
+ # 10 Rainfed cropland; 11 Herbaceous cover; 12 Tree or shrub cover (Orchard); 20 Irrigated cropland
320
+ def GLC_FCS30D_crop_2022_prep():
321
+ GLC_FCS30D = ee.ImageCollection("projects/sat-io/open-datasets/GLC-FCS30D/annual").mosaic().select(22)
322
+ GLC_FCS30D_crop = GLC_FCS30D.gte(10).And(GLC_FCS30D.lte(20))
323
+ return GLC_FCS30D_crop.rename('GLC_FCS30D_crop_2022')
324
+
216
325
  #### disturbances by year
217
326
 
218
327
  # RADD_year_2019 to RADD_year_< current year >
@@ -605,6 +714,27 @@ def esa_fire_before_2020_prep():
605
714
  .rename("ESA_fire_before_2020")
606
715
  )
607
716
 
717
+ #########################logging concessions
718
+ #http://data.globalforestwatch.org/datasets?q=logging&sort_by=relevance
719
+ def logging_concessions_prep():
720
+ RCA=ee.FeatureCollection('projects/ee-whisp/assets/logging/RCA_Permis_dExploitation_et_dAmenagement')
721
+ RCA_binary = ee.Image().paint(RCA,1)
722
+ CMR=ee.FeatureCollection('projects/ee-whisp/assets/logging/Cameroon_Forest_Management_Units')
723
+ CMR_binary = ee.Image().paint(CMR,1)
724
+ Eq_G=ee.FeatureCollection('projects/ee-whisp/assets/logging/Equatorial_Guinea_logging_concessions')
725
+ Eq_G_binary = ee.Image().paint(Eq_G,1)
726
+ DRC=ee.FeatureCollection('projects/ee-whisp/assets/logging/DRC_Forest_concession_agreements')
727
+ DRC_binary = ee.Image().paint(DRC,1)
728
+ Liberia=ee.FeatureCollection('projects/ee-whisp/assets/logging/Liberia_Forest_Management_Contracts')
729
+ Liberia_binary = ee.Image().paint(Liberia,1)
730
+ RoC=ee.FeatureCollection('projects/ee-whisp/assets/logging/Republic_of_the_Congo_logging_concessions')
731
+ Roc_binary = ee.Image().paint(RoC,1)
732
+ Sarawak=ee.FeatureCollection('projects/ee-whisp/assets/logging/Sarawak_logging_concessions')
733
+ Sarawak_binary = ee.Image().paint(Sarawak,1)
734
+ logging_concessions_binary=ee.ImageCollection([RCA_binary, CMR_binary, Eq_G_binary,DRC_binary,Liberia_binary,Roc_binary,Sarawak_binary]).mosaic()
735
+
736
+ return logging_concessions_binary.rename('GFW_logging')
737
+
608
738
 
609
739
  # ###Combining datasets
610
740
 
@@ -1,155 +1,172 @@
1
- name,order,theme,use_for_risk,exclude_from_output,col_type,is_nullable,is_required,corresponding_variable
2
- EUFO_2020,10,treecover,1,0,float32,1,0,jrc_gfc_2020_prep
3
- GLAD_Primary,20,treecover,1,0,float32,1,0,glad_pht_prep
4
- TMF_undist,30,treecover,1,0,float32,1,0,jrc_tmf_undisturbed_prep
5
- JAXA_FNF_2020,40,treecover,1,0,float32,1,0,jaxa_forest_prep
6
- GFC_TC_2020,50,treecover,1,0,float32,1,0,glad_gfc_10pc_prep
7
- Forest_FDaP,60,treecover,1,0,float32,1,0,glad_gfc_10pc_prep
8
- ESA_TC_2020,70,treecover,1,0,float32,1,0,esa_worldcover_trees_prep
9
- TMF_plant,80,commodities,1,0,float32,1,0,jrc_tmf_plantation_prep
10
- Oil_palm_Descals,90,commodities,1,0,float32,1,0,creaf_descals_palm_prep
11
- Oil_palm_FDaP,100,commodities,1,0,float32,1,0,fdap_palm_prep
12
- Cocoa_FDaP,110,commodities,1,0,float32,1,0,fdap_cocoa
13
- Cocoa_ETH,120,commodities,1,0,float32,1,0,eth_kalischek_cocoa_prep
14
- Cocoa_bnetd,130,commodities,1,0,float32,1,0,civ_ocs2020_prep
15
- Rubber_FDaP,140,commodities,1,0,float32,1,0,fdap_rubber_prep
16
- Rubber_RBGE,150,commodities,1,0,float32,1,0,rbge_rubber_prep
17
- WDPA,160,ancilliary,0,1,bool,1,0,wcmc_wdpa_protection_prep
18
- KBA,170,ancilliary,0,1,bool,1,0,birdlife_kbas_biodiversity_prep
19
- TMF_def_2000,180,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
20
- TMF_def_2001,190,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
21
- TMF_def_2002,200,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
22
- TMF_def_2003,210,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
23
- TMF_def_2004,220,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
24
- TMF_def_2005,230,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
25
- TMF_def_2006,240,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
26
- TMF_def_2007,250,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
27
- TMF_def_2008,260,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
28
- TMF_def_2009,270,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
29
- TMF_def_2010,280,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
30
- TMF_def_2011,290,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
31
- TMF_def_2012,300,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
32
- TMF_def_2013,310,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
33
- TMF_def_2014,320,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
34
- TMF_def_2015,330,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
35
- TMF_def_2016,340,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
36
- TMF_def_2017,350,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
37
- TMF_def_2018,360,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
38
- TMF_def_2019,370,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
39
- TMF_def_2020,380,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
40
- TMF_def_2021,390,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
41
- TMF_def_2022,400,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
42
- TMF_def_2023,410,disturbance_before,0,0,float32,1,0,tmf_def_per_year_prep
43
- TMF_deg_2000,420,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
44
- TMF_deg_2001,430,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
45
- TMF_deg_2002,440,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
46
- TMF_deg_2003,450,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
47
- TMF_deg_2004,460,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
48
- TMF_deg_2005,470,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
49
- TMF_deg_2006,480,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
50
- TMF_deg_2007,490,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
51
- TMF_deg_2008,500,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
52
- TMF_deg_2009,510,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
53
- TMF_deg_2010,520,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
54
- TMF_deg_2011,530,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
55
- TMF_deg_2012,540,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
56
- TMF_deg_2013,550,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
57
- TMF_deg_2014,560,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
58
- TMF_deg_2015,570,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
59
- TMF_deg_2016,580,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
60
- TMF_deg_2017,590,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
61
- TMF_deg_2018,600,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
62
- TMF_deg_2019,610,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
63
- TMF_deg_2020,620,disturbance_before,0,0,float32,1,0,tmf_deg_per_year_prep
64
- TMF_deg_2021,630,disturbance_after,0,0,float32,1,0,tmf_deg_per_year_prep
65
- TMF_deg_2022,640,disturbance_after,0,0,float32,1,0,tmf_deg_per_year_prep
66
- TMF_deg_2023,650,disturbance_after,0,0,float32,1,0,tmf_deg_per_year_prep
67
- GFC_loss_year_2001,660,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
68
- GFC_loss_year_2002,670,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
69
- GFC_loss_year_2003,680,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
70
- GFC_loss_year_2004,690,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
71
- GFC_loss_year_2005,700,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
72
- GFC_loss_year_2006,710,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
73
- GFC_loss_year_2007,720,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
74
- GFC_loss_year_2008,730,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
75
- GFC_loss_year_2009,740,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
76
- GFC_loss_year_2010,750,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
77
- GFC_loss_year_2011,760,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
78
- GFC_loss_year_2012,770,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
79
- GFC_loss_year_2013,780,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
80
- GFC_loss_year_2014,790,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
81
- GFC_loss_year_2015,800,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
82
- GFC_loss_year_2016,810,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
83
- GFC_loss_year_2017,820,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
84
- GFC_loss_year_2018,830,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
85
- GFC_loss_year_2019,840,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
86
- GFC_loss_year_2020,850,disturbance_before,0,0,float32,1,0,glad_gfc_loss_per_year_prep
87
- GFC_loss_year_2021,860,disturbance_after,0,0,float32,1,0,glad_gfc_loss_per_year_prep
88
- GFC_loss_year_2022,870,disturbance_after,0,0,float32,1,0,glad_gfc_loss_per_year_prep
89
- GFC_loss_year_2023,880,disturbance_after,0,0,float32,1,0,glad_gfc_loss_per_year_prep
90
- RADD_year_2019,890,disturbance_before,0,0,float32,1,0,radd_year_prep
91
- RADD_year_2020,900,disturbance_before,0,0,float32,1,0,radd_year_prep
92
- RADD_year_2021,910,disturbance_after,0,0,float32,1,0,radd_year_prep
93
- RADD_year_2022,920,disturbance_after,0,0,float32,1,0,radd_year_prep
94
- RADD_year_2023,930,disturbance_after,0,0,float32,1,0,radd_year_prep
95
- RADD_year_2024,940,disturbance_after,0,0,float32,1,0,radd_year_prep
96
- RADD_year_2025,941,disturbance_after,0,0,float32,1,0,radd_year_prep
97
- DIST_year_2024,945,disturbance_after,0,1,float32,1,0,glad_dist_year_prep
98
- DIST_year_2025,946,disturbance_after,0,1,float32,1,0,glad_dist_year_prep
99
- ESA_fire_2001,950,disturbance_before,0,0,float32,1,0,esa_fire_prep
100
- ESA_fire_2002,960,disturbance_before,0,0,float32,1,0,esa_fire_prep
101
- ESA_fire_2003,970,disturbance_before,0,0,float32,1,0,esa_fire_prep
102
- ESA_fire_2004,980,disturbance_before,0,0,float32,1,0,esa_fire_prep
103
- ESA_fire_2005,990,disturbance_before,0,0,float32,1,0,esa_fire_prep
104
- ESA_fire_2006,1000,disturbance_before,0,0,float32,1,0,esa_fire_prep
105
- ESA_fire_2007,1010,disturbance_before,0,0,float32,1,0,esa_fire_prep
106
- ESA_fire_2008,1020,disturbance_before,0,0,float32,1,0,esa_fire_prep
107
- ESA_fire_2009,1030,disturbance_before,0,0,float32,1,0,esa_fire_prep
108
- ESA_fire_2010,1040,disturbance_before,0,0,float32,1,0,esa_fire_prep
109
- ESA_fire_2011,1050,disturbance_before,0,0,float32,1,0,esa_fire_prep
110
- ESA_fire_2012,1060,disturbance_before,0,0,float32,1,0,esa_fire_prep
111
- ESA_fire_2013,1070,disturbance_before,0,0,float32,1,0,esa_fire_prep
112
- ESA_fire_2014,1080,disturbance_before,0,0,float32,1,0,esa_fire_prep
113
- ESA_fire_2015,1090,disturbance_before,0,0,float32,1,0,esa_fire_prep
114
- ESA_fire_2016,1100,disturbance_before,0,0,float32,1,0,esa_fire_prep
115
- ESA_fire_2017,1110,disturbance_before,0,0,float32,1,0,esa_fire_prep
116
- ESA_fire_2018,1120,disturbance_before,0,0,float32,1,0,esa_fire_prep
117
- ESA_fire_2019,1130,disturbance_before,0,0,float32,1,0,esa_fire_prep
118
- ESA_fire_2020,1140,disturbance_before,0,0,float32,1,0,esa_fire_prep
119
- MODIS_fire_2000,1150,disturbance_before,0,0,float32,1,0,modis_fire_prep
120
- MODIS_fire_2001,1160,disturbance_before,0,0,float32,1,0,modis_fire_prep
121
- MODIS_fire_2002,1170,disturbance_before,0,0,float32,1,0,modis_fire_prep
122
- MODIS_fire_2003,1180,disturbance_before,0,0,float32,1,0,modis_fire_prep
123
- MODIS_fire_2004,1190,disturbance_before,0,0,float32,1,0,modis_fire_prep
124
- MODIS_fire_2005,1200,disturbance_before,0,0,float32,1,0,modis_fire_prep
125
- MODIS_fire_2006,1210,disturbance_before,0,0,float32,1,0,modis_fire_prep
126
- MODIS_fire_2007,1220,disturbance_before,0,0,float32,1,0,modis_fire_prep
127
- MODIS_fire_2008,1230,disturbance_before,0,0,float32,1,0,modis_fire_prep
128
- MODIS_fire_2009,1240,disturbance_before,0,0,float32,1,0,modis_fire_prep
129
- MODIS_fire_2010,1250,disturbance_before,0,0,float32,1,0,modis_fire_prep
130
- MODIS_fire_2011,1260,disturbance_before,0,0,float32,1,0,modis_fire_prep
131
- MODIS_fire_2012,1270,disturbance_before,0,0,float32,1,0,modis_fire_prep
132
- MODIS_fire_2013,1280,disturbance_before,0,0,float32,1,0,modis_fire_prep
133
- MODIS_fire_2014,1290,disturbance_before,0,0,float32,1,0,modis_fire_prep
134
- MODIS_fire_2015,1300,disturbance_before,0,0,float32,1,0,modis_fire_prep
135
- MODIS_fire_2016,1310,disturbance_before,0,0,float32,1,0,modis_fire_prep
136
- MODIS_fire_2017,1320,disturbance_before,0,0,float32,1,0,modis_fire_prep
137
- MODIS_fire_2018,1330,disturbance_before,0,0,float32,1,0,modis_fire_prep
138
- MODIS_fire_2019,1340,disturbance_before,0,0,float32,1,0,modis_fire_prep
139
- MODIS_fire_2020,1350,disturbance_before,0,0,float32,1,0,modis_fire_prep
140
- MODIS_fire_2021,1360,disturbance_after,0,0,float32,1,0,modis_fire_prep
141
- MODIS_fire_2022,1370,disturbance_after,0,0,float32,1,0,modis_fire_prep
142
- MODIS_fire_2023,1380,disturbance_after,0,0,float32,1,0,modis_fire_prep
143
- MODIS_fire_2024,1390,disturbance_after,0,0,float32,1,0,modis_fire_prep
144
- TMF_deg_before_2020,1400,disturbance_before,1,0,float32,1,0,tmf_deg_before_2020_prep
145
- TMF_def_before_2020,1410,disturbance_before,1,0,float32,1,0,tmf_def_before_2020_prep
146
- GFC_loss_before_2020,1420,disturbance_before,1,0,float32,1,0,glad_gfc_loss_before_2020_prep
147
- ESA_fire_before_2020,1430,disturbance_before,1,0,float32,1,0,esa_fire_before_2020_prep
148
- MODIS_fire_before_2020,1440,disturbance_before,1,0,float32,1,0,modis_fire_before_2020_prep
149
- RADD_before_2020,1450,disturbance_before,1,0,float32,1,0,radd_before_2020_prep
150
- TMF_deg_after_2020,1460,disturbance_after,1,0,float32,1,0,tmf_deg_after_2020_prep
151
- TMF_def_after_2020,1470,disturbance_after,1,0,float32,1,0,tmf_def_after_2020_prep
152
- GFC_loss_after_2020,1480,disturbance_after,1,0,float32,1,0,glad_gfc_loss_after_2020_prep
153
- MODIS_fire_after_2020,1490,disturbance_after,1,0,float32,1,0,modis_fire_after_2020_prep
154
- RADD_after_2020,1500,disturbance_after,1,0,float32,1,0,RADD_after_2020_prep
155
- DIST_after_2020,1600,disturbance_after,1,1,float32,1,0,glad_dist_after_2020_prep
1
+ name,order,theme,theme_timber,use_for_risk,use_for_risk_timber,exclude_from_output,col_type,is_nullable,is_required,corresponding_variable
2
+ EUFO_2020,10,treecover,naturally_reg_2020,1,1,0,float32,1,0,jrc_gfc_2020_prep
3
+ GLAD_Primary,20,treecover,primary,1,1,0,float32,1,0,glad_pht_prep
4
+ TMF_undist,30,treecover,primary,1,1,0,float32,1,0,jrc_tmf_undisturbed_prep
5
+ JAXA_FNF_2020,40,treecover,,1,0,0,float32,1,0,jaxa_forest_prep
6
+ GFC_TC_2020,50,treecover,naturally_reg_2020,1,1,0,float32,1,0,glad_gfc_10pc_prep
7
+ Forest_FDaP,60,treecover,naturally_reg_2020,1,1,0,float32,1,0,glad_gfc_10pc_prep
8
+ ESA_TC_2020,70,treecover,naturally_reg_2020,1,1,0,float32,1,0,esa_worldcover_trees_prep
9
+ TMF_plant,80,commodities,,1,1,0,float32,1,0,jrc_tmf_plantation_prep
10
+ Oil_palm_Descals,90,commodities,,1,1,0,float32,1,0,creaf_descals_palm_prep
11
+ Oil_palm_FDaP,100,commodities,,1,1,0,float32,1,0,fdap_palm_prep
12
+ Cocoa_FDaP,110,commodities,,1,1,0,float32,1,0,fdap_cocoa
13
+ Cocoa_ETH,120,commodities,,1,1,0,float32,1,0,eth_kalischek_cocoa_prep
14
+ Cocoa_bnetd,130,commodities,,1,1,0,float32,1,0,civ_ocs2020_prep
15
+ Rubber_FDaP,140,commodities,,1,1,0,float32,1,0,fdap_rubber_prep
16
+ Rubber_RBGE,150,commodities,,1,1,0,float32,1,0,rbge_rubber_prep
17
+ Soy_Song_2020,155,commodities,,1,1,0,float32,1,0,soy_song_2020_prep
18
+ WDPA,160,ancilliary,,0,0,1,bool,1,0,wcmc_wdpa_protection_prep
19
+ KBA,170,ancilliary,,0,0,1,bool,1,0,birdlife_kbas_biodiversity_prep
20
+ TMF_def_2000,180,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
21
+ TMF_def_2001,190,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
22
+ TMF_def_2002,200,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
23
+ TMF_def_2003,210,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
24
+ TMF_def_2004,220,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
25
+ TMF_def_2005,230,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
26
+ TMF_def_2006,240,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
27
+ TMF_def_2007,250,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
28
+ TMF_def_2008,260,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
29
+ TMF_def_2009,270,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
30
+ TMF_def_2010,280,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
31
+ TMF_def_2011,290,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
32
+ TMF_def_2012,300,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
33
+ TMF_def_2013,310,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
34
+ TMF_def_2014,320,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
35
+ TMF_def_2015,330,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
36
+ TMF_def_2016,340,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
37
+ TMF_def_2017,350,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
38
+ TMF_def_2018,360,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
39
+ TMF_def_2019,370,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
40
+ TMF_def_2020,380,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
41
+ TMF_def_2021,390,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
42
+ TMF_def_2022,400,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
43
+ TMF_def_2023,410,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
44
+ TMF_deg_2000,420,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
45
+ TMF_deg_2001,430,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
46
+ TMF_deg_2002,440,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
47
+ TMF_deg_2003,450,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
48
+ TMF_deg_2004,460,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
49
+ TMF_deg_2005,470,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
50
+ TMF_deg_2006,480,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
51
+ TMF_deg_2007,490,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
52
+ TMF_deg_2008,500,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
53
+ TMF_deg_2009,510,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
54
+ TMF_deg_2010,520,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
55
+ TMF_deg_2011,530,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
56
+ TMF_deg_2012,540,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
57
+ TMF_deg_2013,550,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
58
+ TMF_deg_2014,560,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
59
+ TMF_deg_2015,570,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
60
+ TMF_deg_2016,580,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
61
+ TMF_deg_2017,590,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
62
+ TMF_deg_2018,600,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
63
+ TMF_deg_2019,610,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
64
+ TMF_deg_2020,620,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
65
+ TMF_deg_2021,630,disturbance_after,,0,0,0,float32,1,0,tmf_deg_per_year_prep
66
+ TMF_deg_2022,640,disturbance_after,,0,0,0,float32,1,0,tmf_deg_per_year_prep
67
+ TMF_deg_2023,650,disturbance_after,,0,0,0,float32,1,0,tmf_deg_per_year_prep
68
+ GFC_loss_year_2001,660,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
69
+ GFC_loss_year_2002,670,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
70
+ GFC_loss_year_2003,680,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
71
+ GFC_loss_year_2004,690,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
72
+ GFC_loss_year_2005,700,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
73
+ GFC_loss_year_2006,710,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
74
+ GFC_loss_year_2007,720,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
75
+ GFC_loss_year_2008,730,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
76
+ GFC_loss_year_2009,740,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
77
+ GFC_loss_year_2010,750,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
78
+ GFC_loss_year_2011,760,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
79
+ GFC_loss_year_2012,770,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
80
+ GFC_loss_year_2013,780,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
81
+ GFC_loss_year_2014,790,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
82
+ GFC_loss_year_2015,800,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
83
+ GFC_loss_year_2016,810,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
84
+ GFC_loss_year_2017,820,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
85
+ GFC_loss_year_2018,830,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
86
+ GFC_loss_year_2019,840,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
87
+ GFC_loss_year_2020,850,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
88
+ GFC_loss_year_2021,860,disturbance_after,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
89
+ GFC_loss_year_2022,870,disturbance_after,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
90
+ GFC_loss_year_2023,880,disturbance_after,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
91
+ RADD_year_2019,890,disturbance_before,,0,0,0,float32,1,0,radd_year_prep
92
+ RADD_year_2020,900,disturbance_before,,0,0,0,float32,1,0,radd_year_prep
93
+ RADD_year_2021,910,disturbance_after,,0,0,0,float32,1,0,radd_year_prep
94
+ RADD_year_2022,920,disturbance_after,,0,0,0,float32,1,0,radd_year_prep
95
+ RADD_year_2023,930,disturbance_after,,0,0,0,float32,1,0,radd_year_prep
96
+ RADD_year_2024,940,disturbance_after,,0,0,0,float32,1,0,radd_year_prep
97
+ RADD_year_2025,941,disturbance_after,,0,0,0,float32,1,0,radd_year_prep
98
+ DIST_year_2024,945,disturbance_after,,0,0,1,float32,1,0,glad_dist_year_prep
99
+ DIST_year_2025,946,disturbance_after,,0,0,1,float32,1,0,glad_dist_year_prep
100
+ ESA_fire_2001,950,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
101
+ ESA_fire_2002,960,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
102
+ ESA_fire_2003,970,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
103
+ ESA_fire_2004,980,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
104
+ ESA_fire_2005,990,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
105
+ ESA_fire_2006,1000,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
106
+ ESA_fire_2007,1010,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
107
+ ESA_fire_2008,1020,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
108
+ ESA_fire_2009,1030,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
109
+ ESA_fire_2010,1040,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
110
+ ESA_fire_2011,1050,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
111
+ ESA_fire_2012,1060,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
112
+ ESA_fire_2013,1070,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
113
+ ESA_fire_2014,1080,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
114
+ ESA_fire_2015,1090,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
115
+ ESA_fire_2016,1100,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
116
+ ESA_fire_2017,1110,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
117
+ ESA_fire_2018,1120,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
118
+ ESA_fire_2019,1130,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
119
+ ESA_fire_2020,1140,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
120
+ MODIS_fire_2000,1150,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
121
+ MODIS_fire_2001,1160,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
122
+ MODIS_fire_2002,1170,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
123
+ MODIS_fire_2003,1180,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
124
+ MODIS_fire_2004,1190,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
125
+ MODIS_fire_2005,1200,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
126
+ MODIS_fire_2006,1210,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
127
+ MODIS_fire_2007,1220,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
128
+ MODIS_fire_2008,1230,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
129
+ MODIS_fire_2009,1240,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
130
+ MODIS_fire_2010,1250,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
131
+ MODIS_fire_2011,1260,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
132
+ MODIS_fire_2012,1270,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
133
+ MODIS_fire_2013,1280,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
134
+ MODIS_fire_2014,1290,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
135
+ MODIS_fire_2015,1300,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
136
+ MODIS_fire_2016,1310,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
137
+ MODIS_fire_2017,1320,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
138
+ MODIS_fire_2018,1330,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
139
+ MODIS_fire_2019,1340,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
140
+ MODIS_fire_2020,1350,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
141
+ MODIS_fire_2021,1360,disturbance_after,,0,0,0,float32,1,0,modis_fire_prep
142
+ MODIS_fire_2022,1370,disturbance_after,,0,0,0,float32,1,0,modis_fire_prep
143
+ MODIS_fire_2023,1380,disturbance_after,,0,0,0,float32,1,0,modis_fire_prep
144
+ MODIS_fire_2024,1390,disturbance_after,,0,0,0,float32,1,0,modis_fire_prep
145
+ MODIS_fire_2025,1391,disturbance_after,,0,0,0,float32,1,0,modis_fire_prep
146
+ TMF_deg_before_2020,1400,disturbance_before,,1,1,0,float32,1,0,tmf_deg_before_2020_prep
147
+ TMF_def_before_2020,1410,disturbance_before,,1,1,0,float32,1,0,tmf_def_before_2020_prep
148
+ GFC_loss_before_2020,1420,disturbance_before,,1,1,0,float32,1,0,glad_gfc_loss_before_2020_prep
149
+ ESA_fire_before_2020,1430,disturbance_before,,1,1,0,float32,1,0,esa_fire_before_2020_prep
150
+ MODIS_fire_before_2020,1440,disturbance_before,,1,1,0,float32,1,0,modis_fire_before_2020_prep
151
+ RADD_before_2020,1450,disturbance_before,,1,1,0,float32,1,0,radd_before_2020_prep
152
+ TMF_deg_after_2020,1460,disturbance_after,,1,1,0,float32,1,0,tmf_deg_after_2020_prep
153
+ TMF_def_after_2020,1470,disturbance_after,,1,1,0,float32,1,0,tmf_def_after_2020_prep
154
+ GFC_loss_after_2020,1480,disturbance_after,,1,1,0,float32,1,0,glad_gfc_loss_after_2020_prep
155
+ MODIS_fire_after_2020,1490,disturbance_after,,1,1,0,float32,1,0,modis_fire_after_2020_prep
156
+ RADD_after_2020,1500,disturbance_after,,1,1,0,float32,1,0,RADD_after_2020_prep
157
+ DIST_after_2020,1600,disturbance_after,,1,1,0,float32,1,0,glad_dist_after_2020_prep
158
+ GFT_primary,1700,,primary,,1,0,float32,1,0,gft_primary_prep
159
+ IFL_2020,1710,,primary,,1,0,float32,1,0,IFL_2020_prep
160
+ European_Primary_Forest,1720,,primary,,1,0,float32,1,0,EPFD_prep
161
+ GFT_naturally_regenerating,1800,,naturally_reg_2020,,1,0,float32,1,0,gft_nat_reg_prep
162
+ GFT_planted_plantation,1900,,planted_plantation_2020,,1,0,float32,1,0,gft_plantation_prep
163
+ IIASA_planted_plantation,1910,,planted_plantation_2020,,1,0,float32,1,0,IIASA_planted_prep
164
+ TMF_regrowth_2023,2000,,treecover_post2020,,1,0,float32,1,0,tmf_regrowth_prep
165
+ ESRI_2023_TC,2010,,treecover_post2020,,1,0,float32,1,0,esri_2023_TC_prep
166
+ GLC_FCS30D_TC_2022,2020,,treecover_post2020,,1,0,float32,1,0,GLC_FCS30D_TC_2022_prep
167
+ Oil_palm_2023_FDaP,2100,,agri_post_2020,,1,0,float32,1,0,fdap_palm_2023_prep
168
+ Rubber_2023_FDaP,2110,,agri_post_2020,,1,0,float32,1,0,fdap_rubber_2023_prep
169
+ Cocoa_2023_FDaP,2120,,agri_post_2020,,1,0,float32,1,0,fdap_cocoa_2023_prep
170
+ ESRI_2023_crop,2130,,agri_post_2020,,1,0,float32,1,0,esri_2023_crop_prep
171
+ GLC_FCS30D_crop_2022,2140,,agri_post_2020,,1,0,float32,1,0,GLC_FCS30D_crop_2022_prep
172
+ GFW_logging,2200,,logging_concession,,1,0,float32,1,0,logging_concessions_prep
openforis_whisp/risk.py CHANGED
@@ -23,14 +23,35 @@ def whisp_risk(
23
23
  ind_2_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
24
24
  ind_3_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
25
25
  ind_4_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
26
+ ind_5_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
27
+ ind_6_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
28
+ ind_7_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
29
+ ind_8_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
30
+ ind_9_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
31
+ ind_10_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
32
+ ind_11_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
26
33
  ind_1_input_columns: pd.Series = None, # see lookup_gee_datasets for details
27
34
  ind_2_input_columns: pd.Series = None, # see lookup_gee_datasets for details
28
35
  ind_3_input_columns: pd.Series = None, # see lookup_gee_datasets for details
29
36
  ind_4_input_columns: pd.Series = None, # see lookup_gee_datasets for details
30
- ind_1_name: str = "Indicator_1_treecover",
31
- ind_2_name: str = "Indicator_2_commodities",
32
- ind_3_name: str = "Indicator_3_disturbance_before_2020",
33
- ind_4_name: str = "Indicator_4_disturbance_after_2020",
37
+ ind_5_input_columns: pd.Series = None, # see lookup_gee_datasets for details
38
+ ind_6_input_columns: pd.Series = None, # see lookup_gee_datasets for details
39
+ ind_7_input_columns: pd.Series = None, # see lookup_gee_datasets for details
40
+ ind_8_input_columns: pd.Series = None, # see lookup_gee_datasets for details
41
+ ind_9_input_columns: pd.Series = None, # see lookup_gee_datasets for details
42
+ ind_10_input_columns: pd.Series = None, # see lookup_gee_datasets for details
43
+ ind_11_input_columns: pd.Series = None, # see lookup_gee_datasets for details
44
+ ind_1_name: str = "Ind_01_treecover",
45
+ ind_2_name: str = "Ind_02_commodities",
46
+ ind_3_name: str = "Ind_03_disturbance_before_2020",
47
+ ind_4_name: str = "Ind_04_disturbance_after_2020",
48
+ ind_5_name: str = "Ind_05_primary_2020",
49
+ ind_6_name: str ="Ind_06_nat_reg_forest_2020",
50
+ ind_7_name: str ="Ind_07_planted_plantations_2020",
51
+ ind_8_name: str ="Ind_08_planted_plantations_post_2020",
52
+ ind_9_name: str ="Ind_09_treecover_post_2020",
53
+ ind_10_name: str ="Ind_10_agri_post_2020",
54
+ ind_11_name: str ="Ind_11_logging_concession",
34
55
  low_name: str = "no",
35
56
  high_name: str = "yes",
36
57
  ) -> data_lookup_type:
@@ -59,33 +80,69 @@ def whisp_risk(
59
80
  """
60
81
 
61
82
  if ind_1_input_columns is None:
62
- ind_1_input_columns = get_cols_ind_1_treecover(lookup_gee_datasets_df)
83
+ ind_1_input_columns = get_cols_ind_01_treecover(lookup_gee_datasets_df)
63
84
  if ind_2_input_columns is None:
64
- ind_2_input_columns = get_cols_ind_2_commodities(lookup_gee_datasets_df)
85
+ ind_2_input_columns = get_cols_ind_02_commodities(lookup_gee_datasets_df)
65
86
  if ind_3_input_columns is None:
66
- ind_3_input_columns = get_cols_ind_3_dist_before_2020(lookup_gee_datasets_df)
87
+ ind_3_input_columns = get_cols_ind_03_dist_before_2020(lookup_gee_datasets_df)
67
88
  if ind_4_input_columns is None:
68
- ind_4_input_columns = get_cols_ind_4_dist_after_2020(lookup_gee_datasets_df)
89
+ ind_4_input_columns = get_cols_ind_04_dist_after_2020(lookup_gee_datasets_df)
90
+ if ind_5_input_columns is None:
91
+ ind_5_input_columns = get_cols_ind_05_primary_2020(lookup_gee_datasets_df)
92
+ if ind_6_input_columns is None:
93
+ ind_6_input_columns = get_cols_ind_06_nat_reg_2020(lookup_gee_datasets_df)
94
+ if ind_7_input_columns is None:
95
+ ind_7_input_columns = get_cols_ind_07_planted_2020(lookup_gee_datasets_df)
96
+ if ind_8_input_columns is None:
97
+ ind_8_input_columns = get_cols_ind_08_planted_post_2020(lookup_gee_datasets_df)
98
+ if ind_9_input_columns is None:
99
+ ind_9_input_columns = get_cols_ind_09_treecover_post_2020(lookup_gee_datasets_df)
100
+ if ind_10_input_columns is None:
101
+ ind_10_input_columns = get_cols_ind_10_agri_post_2020(lookup_gee_datasets_df)
102
+ if ind_11_input_columns is None:
103
+ ind_11_input_columns = get_cols_ind_11_logging(lookup_gee_datasets_df)
104
+
69
105
 
70
106
  # Check range of values
71
107
  check_range(ind_1_pcent_threshold)
72
108
  check_range(ind_2_pcent_threshold)
73
109
  check_range(ind_3_pcent_threshold)
74
110
  check_range(ind_4_pcent_threshold)
75
-
111
+ check_range(ind_5_pcent_threshold)
112
+ check_range(ind_6_pcent_threshold)
113
+ check_range(ind_7_pcent_threshold)
114
+ check_range(ind_8_pcent_threshold)
115
+ check_range(ind_9_pcent_threshold)
116
+ check_range(ind_10_pcent_threshold)
117
+ check_range(ind_11_pcent_threshold)
118
+
76
119
  input_cols = [
77
120
  ind_1_input_columns,
78
121
  ind_2_input_columns,
79
122
  ind_3_input_columns,
80
123
  ind_4_input_columns,
124
+ ind_5_input_columns,
125
+ ind_6_input_columns,
126
+ ind_7_input_columns,
127
+ ind_8_input_columns,
128
+ ind_9_input_columns,
129
+ ind_10_input_columns,
130
+ ind_11_input_columns,
81
131
  ]
82
132
  thresholds = [
83
133
  ind_1_pcent_threshold,
84
134
  ind_2_pcent_threshold,
85
135
  ind_3_pcent_threshold,
86
136
  ind_4_pcent_threshold,
137
+ ind_5_pcent_threshold,
138
+ ind_6_pcent_threshold,
139
+ ind_7_pcent_threshold,
140
+ ind_8_pcent_threshold,
141
+ ind_9_pcent_threshold,
142
+ ind_10_pcent_threshold,
143
+ ind_11_pcent_threshold,
87
144
  ]
88
- names = [ind_1_name, ind_2_name, ind_3_name, ind_4_name]
145
+ names = [ind_1_name, ind_2_name, ind_3_name, ind_4_name,ind_5_name,ind_6_name,ind_7_name,ind_8_name,ind_9_name,ind_10_name,ind_11_name]
89
146
  [check_range(threshold) for threshold in thresholds]
90
147
 
91
148
  df_w_indicators = add_indicators(
@@ -97,18 +154,41 @@ def whisp_risk(
97
154
  high_name,
98
155
  )
99
156
 
100
- df_w_indicators_and_risk = add_eudr_risk_col(
157
+ df_w_indicators_and_risk_pcrop = add_eudr_risk_pcrop_col(
158
+ df=df_w_indicators,
159
+ ind_1_name=ind_1_name,
160
+ ind_2_name=ind_2_name,
161
+ ind_3_name=ind_3_name,
162
+ ind_4_name=ind_4_name,
163
+ )
164
+
165
+ df_w_indicators_and_risk_acrop = add_eudr_risk_acrop_col(
101
166
  df=df_w_indicators,
102
167
  ind_1_name=ind_1_name,
103
168
  ind_2_name=ind_2_name,
104
169
  ind_3_name=ind_3_name,
105
170
  ind_4_name=ind_4_name,
106
171
  )
172
+
173
+ df_w_indicators_and_risk_timber = add_eudr_risk_timber_col(
174
+ df=df_w_indicators,
175
+ ind_1_name=ind_1_name,
176
+ ind_2_name=ind_2_name,
177
+ ind_3_name=ind_3_name,
178
+ ind_4_name=ind_4_name,
179
+ ind_5_name=ind_5_name,
180
+ ind_6_name=ind_6_name,
181
+ ind_7_name=ind_7_name,
182
+ ind_8_name=ind_8_name,
183
+ ind_9_name=ind_9_name,
184
+ ind_10_name=ind_10_name,
185
+ ind_11_name=ind_11_name
186
+ )
107
187
 
108
- return df_w_indicators_and_risk
188
+ return df_w_indicators_and_risk_timber
109
189
 
110
190
 
111
- def add_eudr_risk_col(
191
+ def add_eudr_risk_pcrop_col(
112
192
  df: data_lookup_type,
113
193
  ind_1_name: str,
114
194
  ind_2_name: str,
@@ -136,17 +216,109 @@ def add_eudr_risk_col(
136
216
  or row[ind_2_name] == "yes"
137
217
  or row[ind_3_name] == "yes"
138
218
  ):
139
- df.at[index, "EUDR_risk"] = "low"
219
+ df.at[index, "risk_pcrop"] = "low"
140
220
  # If none of the first three indicators suggest low risk and Indicator 4 suggests no risk, set EUDR_risk to "more_info_needed"
141
221
  elif row[ind_4_name] == "no":
142
- df.at[index, "EUDR_risk"] = "more_info_needed"
222
+ df.at[index, "risk_pcrop"] = "more_info_needed"
143
223
  # If none of the above conditions are met, set EUDR_risk to "high"
144
224
  else:
145
- df.at[index, "EUDR_risk"] = "high"
225
+ df.at[index, "risk_pcrop"] = "high"
146
226
 
147
227
  return df
148
228
 
149
229
 
230
+ def add_eudr_risk_acrop_col(
231
+ df: data_lookup_type,
232
+ ind_1_name: str,
233
+ ind_2_name: str,
234
+ ind_3_name: str,
235
+ ind_4_name: str,
236
+ ) -> data_lookup_type:
237
+ """
238
+ Adds the EUDR (European Union Deforestation Risk) column to the DataFrame based on indicator values.
239
+
240
+ Args:
241
+ df (DataFrame): Input DataFrame.
242
+ ind_1_name (str, optional): Name of first indicator column. Defaults to "Indicator_1_treecover".
243
+ ind_2_name (str, optional): Name of second indicator column. Defaults to "Indicator_2_commodities".
244
+ ind_3_name (str, optional): Name of third indicator column. Defaults to "Indicator_3_disturbance_before_2020".
245
+ ind_4_name (str, optional): Name of fourth indicator column. Defaults to "Indicator_4_disturbance_after_2020".
246
+
247
+ Returns:
248
+ DataFrame: DataFrame with added 'EUDR_risk' column.
249
+ """
250
+
251
+ # soy risk
252
+ for index, row in df.iterrows():
253
+ # If there is no tree cover in 2020, set EUDR_risk_soy to "low"
254
+ if row[ind_1_name] == "no" or row[ind_2_name] == "yes":
255
+ df.at[index, 'risk_acrop'] = "low"
256
+ # If there is tree cover in 2020 and distrubances post 2020, set EUDR_risk_soy to "high"
257
+ elif row[ind_1_name] == "yes" and row[ind_4_name] == "yes":
258
+ df.at[index, 'risk_acrop'] = "high"
259
+ # If tree cover and no disturbances post 2020, set EUDR_risk to "more_info_needed"
260
+ else :
261
+ df.at[index, 'risk_acrop'] = "more_info_needed"
262
+
263
+ return df
264
+
265
+ def add_eudr_risk_timber_col(
266
+ df: data_lookup_type,
267
+ ind_1_name: str,
268
+ ind_2_name: str,
269
+ ind_3_name: str,
270
+ ind_4_name: str,
271
+ ind_5_name: str,
272
+ ind_6_name: str,
273
+ ind_7_name: str,
274
+ ind_8_name: str,
275
+ ind_9_name: str,
276
+ ind_10_name: str,
277
+ ind_11_name: str,
278
+ )-> data_lookup_type:
279
+ """
280
+ Adds the EUDR (European Union Deforestation Risk) column to the DataFrame based on indicator values.
281
+
282
+ Args:
283
+ df (DataFrame): Input DataFrame.
284
+ ind_1_name (str, optional): Name of first indicator column. Defaults to "Indicator_1_treecover".
285
+ ind_2_name (str, optional): Name of second indicator column. Defaults to "Indicator_2_commodities".
286
+ ind_3_name (str, optional): Name of third indicator column. Defaults to "Indicator_3_disturbance_before_2020".
287
+ ind_4_name (str, optional): Name of fourth indicator column. Defaults to "Indicator_4_disturbance_after_2020".
288
+
289
+ Returns:
290
+ DataFrame: DataFrame with added 'EUDR_risk' column.
291
+ """
292
+
293
+ for index, row in df.iterrows():
294
+ # If there is a commodity in 2020 OR if there is planted-plantation in 2020 AND no agriculture in 2023, set EUDR_risk_degrad to "low"
295
+ if row[ind_2_name] == "yes" or (row[ind_7_name] == "yes" and row[ind_10_name] == "no"):
296
+ df.at[index, 'risk_timber'] = "low"
297
+ # If there is no tree cover, set EUDR_risk_degrad to "low"? no because of unstocked forests
298
+ # if row[ind_1_name] == "no" or row[ind_3_name] == "yes" or row[ind_7_name] == "yes":
299
+ # df.at[index, 'EUDR_risk_degrad'] = "low"
300
+ # If primary or naturally regenerating or planted forest in 2020 AND agricultural use in 2023, set EUDR_risk to high
301
+ elif (row[ind_5_name] == "yes" or row[ind_6_name] == "yes" or row[ind_7_name] == "yes") and row[ind_10_name] == "yes":
302
+ df.at[index, 'risk_timber'] = "high"
303
+ #If primary or naturally regenerating AND planted post 2020, set EUDR_risk to "high"
304
+ elif (row[ind_5_name] == "yes" or row[ind_6_name] == "yes") and row[ind_8_name] == "yes":
305
+ df.at[index, 'risk_timber'] = "high"
306
+ # If primary or naturally regenerating or planted forest in 2020 and OWL in 2023, set EUDR_risk to high
307
+ #elif (row[ind_5_name] == "yes" or row[ind_6_name] == "yes" or row[ind_7_name] == "yes") and row[ind_10_name] == "yes":
308
+ # df.at[index, 'EUDR_risk_timber'] = "high"
309
+
310
+ # If primary forest OR naturally regenerating AND an information on management practice OR tree cover post 2020, set EUDR_risk_degrad to "low"
311
+ elif (row[ind_5_name] == "yes" or row[ind_6_name] == "yes") and (row[ind_9_name] == "yes" or row[ind_11_name] == "yes"):
312
+ df.at[index, 'risk_timber'] = "low"
313
+ # If primary or naturally regenerating and no other info, set EUDR_risk to "more_info_needed"
314
+ elif row[ind_5_name] == "yes" or row[ind_6_name] == "yes" :
315
+ df.at[index, 'risk_timber'] = "more_info_needed"
316
+ # If none of the above conditions are met, set EUDR_risk to "high"
317
+ else:
318
+ df.at[index, 'risk_timber'] = "high"
319
+
320
+ return df
321
+
150
322
  def add_indicators(
151
323
  df: data_lookup_type,
152
324
  input_cols: list[str],
@@ -220,7 +392,7 @@ def add_indicator_column(
220
392
  return df
221
393
 
222
394
 
223
- def get_cols_ind_1_treecover(lookup_gee_datasets_df):
395
+ def get_cols_ind_01_treecover(lookup_gee_datasets_df):
224
396
  """
225
397
  Generate a list of dataset names for the treecover theme, excluding those marked for exclusion.
226
398
 
@@ -241,7 +413,7 @@ def get_cols_ind_1_treecover(lookup_gee_datasets_df):
241
413
  )
242
414
 
243
415
 
244
- def get_cols_ind_2_commodities(lookup_gee_datasets_df):
416
+ def get_cols_ind_02_commodities(lookup_gee_datasets_df):
245
417
  """
246
418
  Generate a list of dataset names for the commodities theme, excluding those marked for exclusion.
247
419
 
@@ -262,7 +434,7 @@ def get_cols_ind_2_commodities(lookup_gee_datasets_df):
262
434
  )
263
435
 
264
436
 
265
- def get_cols_ind_3_dist_before_2020(lookup_gee_datasets_df):
437
+ def get_cols_ind_03_dist_before_2020(lookup_gee_datasets_df):
266
438
  """
267
439
  Generate a list of dataset names for the disturbance before 2020 theme, excluding those marked for exclusion.
268
440
 
@@ -283,7 +455,7 @@ def get_cols_ind_3_dist_before_2020(lookup_gee_datasets_df):
283
455
  )
284
456
 
285
457
 
286
- def get_cols_ind_4_dist_after_2020(lookup_gee_datasets_df):
458
+ def get_cols_ind_04_dist_after_2020(lookup_gee_datasets_df):
287
459
  """
288
460
  Generate a list of dataset names for the disturbance after 2020 theme, excluding those marked for exclusion.
289
461
 
@@ -303,7 +475,130 @@ def get_cols_ind_4_dist_after_2020(lookup_gee_datasets_df):
303
475
  ]
304
476
  )
305
477
 
478
+ def get_cols_ind_05_primary_2020(lookup_gee_datasets_df):
479
+ """
480
+ Generate a list of dataset names for primary forests in 2020
481
+
482
+ Args:
483
+ lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
484
+
485
+ Returns:
486
+ list: List of dataset names set to be used in the risk calculations for the degradation - primary forest in 2020, excluding those marked for exclusion.
487
+ """
488
+ lookup_gee_datasets_df = lookup_gee_datasets_df[
489
+ lookup_gee_datasets_df["exclude_from_output"] != 1
490
+ ]
491
+ return list(lookup_gee_datasets_df["name"][
492
+ (lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
493
+ (lookup_gee_datasets_df["theme_timber"] == "primary")
494
+ ])
495
+
496
+ def get_cols_ind_06_nat_reg_2020(lookup_gee_datasets_df):
497
+ """
498
+ Generate a list of dataset names for naturally_reg_2020 forests in 2020
499
+
500
+ Args:
501
+ lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
502
+
503
+ Returns:
504
+ list: List of dataset names set to be used in the risk calculations for the degradation - naturally_reg_2020 in 2020, excluding those marked for exclusion.
505
+ """
506
+ lookup_gee_datasets_df = lookup_gee_datasets_df[
507
+ lookup_gee_datasets_df["exclude_from_output"] != 1
508
+ ]
509
+ return list(lookup_gee_datasets_df["name"][
510
+ (lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
511
+ (lookup_gee_datasets_df["theme_timber"] == "naturally_reg_2020")
512
+ ])
513
+
514
+ def get_cols_ind_07_planted_2020(lookup_gee_datasets_df):
515
+ """
516
+ Generate a list of dataset names for planted and plantation forests in 2020
517
+
518
+ Args:
519
+ lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
520
+
521
+ Returns:
522
+ list: List of dataset names set to be used in the risk calculations for the degradation - planted and plantation forests in 2020, excluding those marked for exclusion.
523
+ """
524
+ lookup_gee_datasets_df = lookup_gee_datasets_df[
525
+ lookup_gee_datasets_df["exclude_from_output"] != 1
526
+ ]
527
+ return list(lookup_gee_datasets_df["name"][
528
+ (lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
529
+ (lookup_gee_datasets_df["theme_timber"] == "planted_plantation_2020")
530
+ ])
531
+ def get_cols_ind_08_planted_post_2020(lookup_gee_datasets_df):
532
+ """
533
+ Generate a list of dataset names for planted and plantation forests post 2020
534
+
535
+ Args:
536
+ lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
537
+
538
+ Returns:
539
+ list: List of dataset names set to be used in the risk calculations for the degradation - planted and plantation forests post 2020, excluding those marked for exclusion.
540
+ """
541
+ lookup_gee_datasets_df = lookup_gee_datasets_df[
542
+ lookup_gee_datasets_df["exclude_from_output"] != 1
543
+ ]
544
+ return list(lookup_gee_datasets_df["name"][
545
+ (lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
546
+ (lookup_gee_datasets_df["theme_timber"] == "planted_plantation_post_2020")
547
+ ])
548
+ def get_cols_ind_09_treecover_post_2020(lookup_gee_datasets_df):
549
+ """
550
+ Generate a list of dataset names for treecover post 2020
306
551
 
552
+ Args:
553
+ lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
554
+
555
+ Returns:
556
+ list: List of dataset names set to be used in the risk calculations for the degradation - treecover post 2020, excluding those marked for exclusion.
557
+ """
558
+ lookup_gee_datasets_df = lookup_gee_datasets_df[
559
+ lookup_gee_datasets_df["exclude_from_output"] != 1
560
+ ]
561
+ return list(lookup_gee_datasets_df["name"][
562
+ (lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
563
+ (lookup_gee_datasets_df["theme_timber"] == "treecover_post2020")
564
+ ])
565
+
566
+ def get_cols_ind_10_agri_post_2020(lookup_gee_datasets_df):
567
+ """
568
+ Generate a list of dataset names for croplands post 2020
569
+
570
+ Args:
571
+ lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
572
+
573
+ Returns:
574
+ list: List of dataset names set to be used in the risk calculations for the degradation - croplands post 2020, excluding those marked for exclusion.
575
+ """
576
+ lookup_gee_datasets_df = lookup_gee_datasets_df[
577
+ lookup_gee_datasets_df["exclude_from_output"] != 1
578
+ ]
579
+ return list(lookup_gee_datasets_df["name"][
580
+ (lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
581
+ (lookup_gee_datasets_df["theme_timber"] == "agri_post_2020")
582
+ ])
583
+
584
+ def get_cols_ind_11_logging(lookup_gee_datasets_df):
585
+ """
586
+ Generate a list of dataset names for logging concessions (2020 if available)
587
+
588
+ Args:
589
+ lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
590
+
591
+ Returns:
592
+ list: List of dataset names set to be used in the risk calculations for the degradation - logging concessions, excluding those marked for exclusion.
593
+ """
594
+ lookup_gee_datasets_df = lookup_gee_datasets_df[
595
+ lookup_gee_datasets_df["exclude_from_output"] != 1
596
+ ]
597
+ return list(lookup_gee_datasets_df["name"][
598
+ (lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
599
+ (lookup_gee_datasets_df["theme_timber"] == "logging_concession")
600
+ ])
601
+
307
602
  def clamp(
308
603
  value: float | pd.Series, min_val: float, max_val: float
309
604
  ) -> float | pd.Series:
@@ -326,4 +621,4 @@ def clamp(
326
621
 
327
622
  def check_range(value: float) -> None:
328
623
  if not (0 <= value <= 100):
329
- raise ValueError("Value must be between 0 and 100.")
624
+ raise ValueError("Value must be between 0 and 100.")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openforis-whisp
3
- Version: 0.1.0a7
3
+ Version: 1.0.0a1
4
4
  Summary: Whisp (What is in that plot) is an open-source solution which helps to produce relevant forest monitoring information and support compliance with deforestation-related regulations.
5
5
  License: MIT
6
6
  Keywords: whisp,geospatial,data-processing
@@ -107,12 +107,40 @@ However, under the same circumstances but with <u>no</u> disturbances reported a
107
107
  *The Whisp algorithm visualized:*
108
108
  ![CoE_Graphic 5](https://github.com/user-attachments/assets/007b5f50-3939-4707-95fa-98be4d56745f)
109
109
 
110
+ ## Whisp datasets for timber <a name="whisp_datasets_timber"></a>
111
+ ***Whisp*** implements the convergence of evidence approach by providing a transparent and public processing flow using datasets covering the following categories:
112
+ 1) Tree and forest cover (at the end of 2020);
113
+ 2) Commodities (i.e., crop plantations and other agricultural uses at the end of 2020);
114
+ 3) Disturbances **before 2020** (i.e., degradation or deforestation until 2020-12-31);
115
+ 4) Disturbances **after 2020** (i.e., degradation or deforestation from 2021-01-01 onward).
116
+ 5) Primary forests in 2020;
117
+ 6) Naturally regenerating forests in 2020;
118
+ 7) Planted and plantation forests in 2020;
119
+ 8) Planted and plantation forests in 2023;
120
+ 9) Treecover in 2023;
121
+ 10) Commodities or croplands in 2023.
122
+ 11) Logging concessions;
123
+
124
+ There are multiple datasets for each category. Find the full current [list of datasets used in Whisp here](https://github.com/forestdatapartnership/whisp/blob/main/layers_description.md).
125
+ Whisp checks the plots provided by the user by running zonal statistics on them to answer the following questions:
126
+
127
+ 1) Was there tree cover in 2020?
128
+ 2) Were there commodity plantations or other agricultural uses in 2020?
129
+ 3) Were there disturbances until 2020-12-31?
130
+ 4) Were there disturbances after 2020-12-31 / starting 2021-01-01?
131
+ 5) Were there primary forests in 2020?
132
+ 6) Were there naturally regenerating forests in 2020?
133
+ 7) Were there planted and plantation forests in 2020?
134
+ 8) Were there planted and plantation forests in 2023?
135
+ 9) Was there treecover in 2023?
136
+ 10) Were there commodity plantations or other agricultural uses in 2023?
137
+ 11) Were there logging concessions?
110
138
 
111
139
  # Run Whisp python package from a notebook
112
140
 
113
141
  For most users we suggest using the Whisp App to process their plot data. But for some, using the python package directly will fit their workflow.
114
142
 
115
- A simple example of the package functionality can be seen in this [Colab Notebook](https://github.com/forestdatapartnership/whisp/blob/main/notebooks/Colab_whisp_geojson_to_csv.ipynb)
143
+ A simple example of the package functionality can be seen in this [Colab Notebook](https://github.com/forestdatapartnership/whisp/blob/main/notebooks/Colab_whisp_geojson_to_csv.ipynb)
116
144
 
117
145
  ## Requirements for running the package
118
146
 
@@ -124,7 +152,7 @@ More info on Whisp can be found in [here](https://openknowledge.fao.org/items/e9
124
152
 
125
153
  ## Python package installation
126
154
 
127
- The Whisp package is available on pip
155
+ The Whisp package is available on pip
128
156
  https://pypi.org/project/openforis-whisp/
129
157
 
130
158
 
@@ -142,7 +170,22 @@ More info on Whisp can be found in [here](https://openknowledge.fao.org/items/e9
142
170
 
143
171
 
144
172
  ## How to add data layers to Whisp
145
- There are two main approaches: to request a layer be incorporated into the core Whisp inputs, or to add in your own data directly to complement the core ones in Whisp. Currently the latter approach is under revision since moving to implementation in a python package. In the meantime please contact us through the issues page if this is functionality is useful to you.
173
+ There are two main approaches:
174
+ 1) Request that a layer be incorporated into the core Whisp inputs, or
175
+
176
+ 2) Add your own data directly to complement the core datasets.
177
+
178
+ Currently the latter approach is under revision since moving to implementation in a python package. In the meantime please contact us through the issues page if this is functionality is useful to you.
179
+
180
+ Requesting a layer addition:
181
+ If you think a particular dataset has wide applicability for Whisp users, you can request it be added to the main Whisp repository by logging as an issue in Github [here] (https://github.com/forestdatapartnership/whisp/issues/). Before submitting a request, consider the following:
182
+
183
+ - Is the resolution high enough for plot-level analysis? (e.g., 30m or 10m resolution)
184
+
185
+ - Is there an indication of data quality? (e.g., accuracy assessment detailed in a scientific publication)
186
+
187
+ - Is there relevant metadata available?
188
+
146
189
 
147
190
  ## Contributing to the Whisp code base
148
191
  Contributions to the Whisp code in GitHub are welcome. They can be made by forking the repository making and pushing the required changes, then making a pull request to the Whisp repository. After briefly reviewing the request, we can make a branch for which to make a new pull request to. After final checks we can then incorporate the code in main. If in doubt get in contact first or log as an issue [here](https://github.com/forestdatapartnership/whisp/issues/).
@@ -166,10 +209,10 @@ Please read the [contributing guidelines](contributing_guidelines.md) for good p
166
209
 
167
210
  ## Code of Conduct <a name="whisp_conduct"></a>
168
211
 
169
- **Purpose**
212
+ **Purpose**
170
213
  We are dedicated to maintaining a safe and respectful environment for all users. Harassment or abusive behavior will not be tolerated. <br>
171
214
 
172
- **Scope**
215
+ **Scope**
173
216
  This Code applies to all interactions on the repository and on the app.
174
217
 
175
218
  **Expectations** <br>
@@ -182,6 +225,7 @@ This Code applies to all interactions on the repository and on the app.
182
225
  *- Discrimination:* Any form of hate speech or exclusion based on race, gender, orientation, or other identities.<br>
183
226
  *- Inappropriate Content:* Posting offensive, harmful, or explicit material.
184
227
 
185
- **Reporting**
228
+ **Reporting**
186
229
  Users can report violations directly to us by emailing the address listed in the "Contact Us" section of the website:
187
230
  https://openforis.org/solutions/whisp/
231
+
@@ -1,17 +1,17 @@
1
1
  openforis_whisp/__init__.py,sha256=ozyJr8a-da-_dIq6gy2sD5U-2CevrgWF6XztqNU1Oew,2373
2
2
  openforis_whisp/data_conversion.py,sha256=96en23_ysP7OfOJNGBssDyaX8seuzYGUarqdgnbI4SU,10961
3
- openforis_whisp/datasets.py,sha256=YsPSKzKx62ZpbWvyA9piVnRcwl8R2yW4md68esEb0I0,23470
3
+ openforis_whisp/datasets.py,sha256=UJPq_ssUPQDja-4KNHGhLCwAq-GoutjUT_IEkVjpgwE,29398
4
4
  openforis_whisp/logger.py,sha256=bcKu82a3njNIBiRghDcO_cC-SOK62cYAYuTaSWq7s9I,1354
5
5
  openforis_whisp/parameters/__init__.py,sha256=KL7iORJVjSpZatYjoyWckcmQJnE89_DBC8R6_0_eR6o,349
6
6
  openforis_whisp/parameters/config_runtime.py,sha256=b1Rk7VSRsfo6ucXeuZgm-jwW0-tL90bgbNqKMcLyV40,1233
7
7
  openforis_whisp/parameters/lookup_context_and_metadata.csv,sha256=4eciReFRPRSDeKBiUiODbhFrtZcguxgxc2DOlMB6qG8,1003
8
- openforis_whisp/parameters/lookup_gee_datasets.csv,sha256=nH_StTYmxY74lYBsWNbK60FhUBmGzXiVyWdJ-sJ9ezA,11627
8
+ openforis_whisp/parameters/lookup_gee_datasets.csv,sha256=B6HpxfGQy009qtUjm_cqQByrFl3DomH6BVGlXvdY8jM,13515
9
9
  openforis_whisp/pd_schemas.py,sha256=W_ocS773LHfc05dJqvWRa-bRdX0wKFoNp0lMxgFx94Y,2681
10
10
  openforis_whisp/reformat.py,sha256=_ByLR5bu_gPecH6W4jxymkcIN5Hph3bRIuRfjZByNBU,12125
11
- openforis_whisp/risk.py,sha256=8WY0NPhTuYSjdDMANA0Km9fEWs4H_Z5hH7Q4tgrp5s8,13369
11
+ openforis_whisp/risk.py,sha256=KyCgbYaWXW79LFQ__XcgAGvO3jLqlno3A1YoRnWX_7E,27375
12
12
  openforis_whisp/stats.py,sha256=Y-IfazrTA_O5wQ8YE0GypXQYopp1V-ym_jPLwtNCw4M,26405
13
13
  openforis_whisp/utils.py,sha256=hpeY9aA3BND2m9c15PZ6_nClemsfiVNUEzA4pQXfztA,5330
14
- openforis_whisp-0.1.0a7.dist-info/LICENSE,sha256=nqyqICO95iw_iwzP1t_IIAf7ZX3DPbL_M9WyQfh2q1k,1085
15
- openforis_whisp-0.1.0a7.dist-info/METADATA,sha256=E9yv-9B8AV1adzWXiNDVhyslk5GGIfFypn4InMQCK_c,11437
16
- openforis_whisp-0.1.0a7.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
17
- openforis_whisp-0.1.0a7.dist-info/RECORD,,
14
+ openforis_whisp-1.0.0a1.dist-info/LICENSE,sha256=nqyqICO95iw_iwzP1t_IIAf7ZX3DPbL_M9WyQfh2q1k,1085
15
+ openforis_whisp-1.0.0a1.dist-info/METADATA,sha256=fjVpIZnaKO8E_qD_KsrndyyUVmWl_4Y3iue2PRdiP7M,13634
16
+ openforis_whisp-1.0.0a1.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
17
+ openforis_whisp-1.0.0a1.dist-info/RECORD,,