whisp
The Forest Data Partnership promotes a Convergence of Evidence approach for Forest and Commodities Monitoring.
https://github.com/forestdatapartnership/whisp
Category: Biosphere
Sub Category: Deforestation and Reforestation
Last synced: about 13 hours ago
JSON representation
Repository metadata
- Host: GitHub
- URL: https://github.com/forestdatapartnership/whisp
- Owner: forestdatapartnership
- License: mit
- Created: 2024-01-08T09:59:16.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-27T16:20:29.000Z (16 days ago)
- Last Synced: 2025-06-29T20:38:58.924Z (14 days ago)
- Language: Jupyter Notebook
- Size: 21.1 MB
- Stars: 28
- Watchers: 5
- Forks: 14
- Open Issues: 13
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Contributing: contributing_guidelines.md
- License: LICENSE
README.md
whisp
Convergence of Evidence
Whisp stands for "What is in that plot"?
Numerous publicly available Earth Observation maps provide data on tree cover, land use, and forest disturbances. However, these maps often differ from one another because they use various definitions and classification systems. As a result, no single map can provide a complete picture of any specific area. To address this issue, the Forest Data Partnership (FDaP) and the AIM4Forests Programme advocate for the Convergence of Evidence approach.
The Forest Data Partnership promotes this approach for forest and commodities monitoring, assuming that
- no single source of geospatial data can tell the whole story around any given plot of land;
- all the existing, published and available datasets contribute to telling that story.
Contents
- Whisp pathways
- Whisp datasets
- Whisp notebooks
- Add data layers
- Contribute to the code
- Code of conduct
Whisp pathways
Whisp can currently be used directly or implemented in your own code through three different pathways:
-
The Whisp App with its simple interface can be used right here or called from other software by API. The Whisp App currently supports the processing of up to 1000 geometries per job. The original JS & Python code behind the Whisp App and API can be found here.
-
Whisp in Earthmap supports the visualization of geometries on actual maps with the possibility to toggle different relevant map products around tree cover, commodities and deforestation. It is practical for demonstration purposes and spot checks of single geometries but not recommended for larger datasets.
-
Datasets of any size, especially when holding more than 1000 geometries, can be analyzed with Whisp through the python package on pip. See example Colab Notebook for implementation with a geojson input. For the detailed procedure please go to the section Whisp notebooks.
Whisp datasets
All output columns from Whisp are described in this excel file
Whisp implements the convergence of evidence approach by providing a transparent and public processing flow using datasets covering the following categories:
- Tree and forest cover (at the end of 2020);
- Commodities (i.e., crop plantations and other agricultural uses at the end of 2020);
- Disturbances before 2020 (i.e., degradation or deforestation until 2020-12-31);
- Disturbances after 2020 (i.e., degradation or deforestation from 2021-01-01 onward).
There are multiple datasets for each category. Find the full current list of datasets used in Whisp here.
Whisp checks the plots provided by the user by running zonal statistics on them to answer the following questions:
- Was there tree cover in 2020?
- Were there commodity plantations or other agricultural uses in 2020?
- Were there disturbances until 2020-12-31?
- Were there disturbances after 2020-12-31 / starting 2021-01-01?
If no treecover dataset indicates any tree cover for a plot by the end of 2020, Whisp will categorize the deforestation risk as low.
If one or more treecover datasets indicate tree cover on a plot by the end of 2020, but a commodity dataset indicates agricultural use by the end of 2020, Whisp will categorize the deforestation risk as low.
If treecover datasets indicate tree cover on a plot by late 2020, no commodity datasets indicate agricultural use, but a disturbance dataset indicates disturbances before the end of 2020, Whisp will categorize the deforestation risk as low. Such deforestation has happened before 2020, which aligns with the cutoff date for legislation such as EUDR, and is therefore not considered high risk.
Now, if the datasets under 1., 2. & 3. indicate that there was tree cover, but no agriculture and no disturbances before or by the end of 2020, the Whisp algorithm checks whether degradation or deforestation have been reported in a disturbance dataset after 2020-12-31. If they have, Whisp will categorize the deforestation risk as high.
However, under the same circumstances but with no disturbances reported after 2020-12-31 there is insufficient evidence and the Whisp output will be "More info needed". Such can be the case for, e.g., cocoa or coffee grown under the shade of treecover or agroforestry.
The Whisp algorithm for Perennial Crops visualized:
The Whisp algorithm outputs multiple statistical columns with disaggregated data from the input datasets, followed by aggregated indicator columns, and the final risk assessment columns.
The relevant risk assessment column depends on the commodity in question:
The decision tree for the timber risk assessment slightly differs from the above. For more information see below.
Whisp datasets for timber
Whisp implements the convergence of evidence approach by providing a transparent and public processing flow using datasets covering the following categories:
- Tree and forest cover (at the end of 2020);
- Commodities (i.e., crop plantations and other agricultural uses at the end of 2020);
- Disturbances before 2020 (i.e., degradation or deforestation until 2020-12-31);
- Disturbances after 2020 (i.e., degradation or deforestation from 2021-01-01 onward).
- Primary forests in 2020;
- Naturally regenerating forests in 2020;
- Planted and plantation forests in 2020;
- Planted and plantation forests in 2023;
- Treecover in 2023;
- Commodities or croplands in 2023.
- Logging concessions;
There are multiple datasets for each category. Find the full current list of datasets used in Whisp here.
Whisp checks the plots provided by the user by running zonal statistics on them to answer the following questions:
- Was there tree cover in 2020?
- Were there commodity plantations or other agricultural uses in 2020?
- Were there disturbances until 2020-12-31?
- Were there disturbances after 2020-12-31 / starting 2021-01-01?
- Were there primary forests in 2020?
- Were there naturally regenerating forests in 2020?
- Were there planted and plantation forests in 2020?
- Were there planted and plantation forests in 2023?
- Was there treecover in 2023?
- Were there commodity plantations or other agricultural uses in 2023?
- Were there logging concessions?
Run Whisp python package from a notebook
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.
A simple example of the package functionality can be seen in this Colab Notebook
For an example notebook adapted for running locally (or in Sepal), see: whisp_geojson_to_csv.ipynb
Requirements for running the package
- A Google Earth Engine (GEE) account.
- A registered cloud GEE project.
- Some experience in Python or a similar language.
More info on Whisp can be found in here
Python package installation
The Whisp package is available on pip
https://pypi.org/project/openforis-whisp/
It can be installed with one line of code:
pip install --pre openforis-whisp
If running the package locally we recommend a virtual environment to keep your main python installation clean. For users running the package in Sepal see here.
The package relies upon the google earth engine api being setup correctly using a registered cloud project.
More info on Whisp can be found here
How to add data layers to Whisp
There are two main approaches:
-
Request that a layer be incorporated into the core Whisp inputs, or
-
Add your own data directly to complement the core datasets.
Requesting a layer addition
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 it as an issue in GitHub here.
Before submitting a request, consider the following:
-
Is the resolution high enough for plot-level analysis? (e.g., 30m or 10m resolution)
-
Is there an indication of data quality? (e.g., accuracy assessment detailed in a scientific publication)
-
Is there relevant metadata available?
Adding your own data directly
To add your own data you will need some coding experience as well as familiarity with GitHub and Google Earth Engine.
This approach is for those who want to run a bespoke analysis combining their own data with those already in Whisp.
Firstly follow the steps below to install the package in editable mode.
As with the regular pip installation, we recommend a separate virtual environment for running in editable mode. For Sepal users see here.
git clone https://github.com/forestdatapartnership/whisp.git
cd whisp/
pip install -e .[dev]
Once in editable mode you are running the Whisp package locally based on a cloned version of the code.
There are two files to edit to add your own data:
-
src/openforis_whisp/datasets.py
-
src/openforis_whisp/parameters/lookup_gee_datasets.csv
The datasets.py
file is a Python script that defines functions which return GEE images composed of one or more bands.
To add your own dataset:
-
Add code to
datasets.py
in the form of a function that returns a single-band binary image for your dataset. See notes at the top of the file and example functions for formatting. -
Edit the
lookup_gee_datasets.csv
and add a row for your dataset.
NB: You need to know what the dataset represents and define how it will be used in the different risk decision trees (if at all).
For example, if it is a dataset for tree cover in 2000, then add 'treecover'
under the Theme
column.
datasets.py
:
Example function in
def my_custom_dataset_prep():
image = ee.Image("MY/GEE/DATASET")
binary = image.gt(10) # Example threshold
return binary.rename("My_custom_dataset")
We are working on ways to make this process smoother. However, in the meantime do contact us through the issues page on GitHub, or via the Open Foris email, if this functionality is useful to you or you need help.
Contributing to the Whisp code base
Contributions to the Whisp code in GitHub are welcome. These could be additional functionality, datasets or just cleaner code! Contributions 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 into the main branch. If in doubt, get in contact first or log as an issue here.
Install the package in editable mode (see Adding your own data directly above):
Then add additional dependencies required for testing and running pre-commit hooks:
pre-commit install
You should be able to run the Pytest suite by simply running the pytest
command from the repo's root folder.
Please read the contributing guidelines for good practice recommendations
Code of Conduct
Purpose
We are dedicated to maintaining a safe and respectful environment for all users. Harassment or abusive behavior will not be tolerated.
Scope
This Code applies to all interactions on the repository and on the app.
Expectations
- Respect others: Treat all contributors and users with courtesy and kindness.
- Constructive communication: Engage respectfully, even in disagreements.
- Protect privacy: Do not share personal information without consent.
Prohibited Conduct
- Harassment: Unwanted or abusive communication, stalking, threats, or bullying.
- Discrimination: Any form of hate speech or exclusion based on race, gender, orientation, or other identities.
- Inappropriate Content: Posting offensive, harmful, or explicit material.
Reporting
Users can report violations directly to us by emailing the address listed in the "Contact Us" section of the website:
https://openforis.org/solutions/whisp/
Owner metadata
- Name: Forest Data Partnership
- Login: forestdatapartnership
- Email: [email protected]
- Kind: organization
- Description: Forest Data Partnership
- Website: www.forestdatapartnership.org
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/155651852?v=4
- Repositories: 3
- Last ynced at: 2024-04-18T02:16:21.315Z
- Profile URL: https://github.com/forestdatapartnership
GitHub Events
Total
- Issues event: 20
- Watch event: 13
- Delete event: 23
- Member event: 1
- Issue comment event: 15
- Push event: 130
- Pull request event: 39
- Fork event: 4
- Create event: 33
Last Year
- Issues event: 20
- Watch event: 13
- Delete event: 23
- Member event: 1
- Issue comment event: 15
- Push event: 130
- Pull request event: 39
- Fork event: 4
- Create event: 33
Committers metadata
Last synced: 3 days ago
Total Commits: 290
Total Committers: 6
Avg Commits per committer: 48.333
Development Distribution Score (DDS): 0.562
Commits in past year: 134
Committers in past year: 6
Avg Commits per committer in past year: 22.333
Development Distribution Score (DDS) in past year: 0.597
Name | Commits | |
---|---|---|
andyarnell | y****u@e****m | 127 |
andyarnell | a****l@h****m | 63 |
astridverhegghen | a****n@g****m | 30 |
Jonas Spekker | 9****k | 30 |
lecrabe | l****e | 28 |
jonnvega | 4****a | 12 |
Committer domains:
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 29
Total pull requests: 60
Average time to close issues: about 2 months
Average time to close pull requests: 1 day
Total issue authors: 11
Total pull request authors: 7
Average comments per issue: 1.41
Average comments per pull request: 0.12
Merged pull request: 51
Bot issues: 0
Bot pull requests: 0
Past year issues: 17
Past year pull requests: 36
Past year average time to close issues: 2 months
Past year average time to close pull requests: 1 day
Past year issue authors: 8
Past year pull request authors: 4
Past year average comments per issue: 1.18
Past year average comments per pull request: 0.06
Past year merged pull request: 31
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- andyarnell (12)
- lecrabe (4)
- FlorentScarpaSustaain (3)
- julesntare (3)
- wilderbravo (1)
- ollieg (1)
- GDieguezG (1)
- melvinlippe23 (1)
- FLUM2022 (1)
- 12rambau (1)
- crianopa (1)
Top Pull Request Authors
- andyarnell (37)
- jo-spek (12)
- astridverhegghen (4)
- lecrabe (3)
- FlorentScarpaSustaain (2)
- dfguerrerom (1)
- estellerambier (1)
Top Issue Labels
Top Pull Request Labels
Package metadata
- Total packages: 2
-
Total downloads:
- pypi: 493 last-month
- Total dependent packages: 0 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 26
- Total maintainers: 1
proxy.golang.org: github.com/forestdatapartnership/whisp
- Homepage:
- Documentation: https://pkg.go.dev/github.com/forestdatapartnership/whisp#section-documentation
- Licenses: mit
- Latest release: v0.0.1 (published 4 months ago)
- Last Synced: 2025-07-12T02:33:06.600Z (1 day ago)
- Versions: 11
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
pypi.org: openforis-whisp
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.
- Homepage: https://github.com/forestdatapartnership/whisp
- Documentation: https://github.com/forestdatapartnership/whisp#readme
- Licenses: MIT
- Latest release: 0.0.1 (published 4 months ago)
- Last Synced: 2025-07-12T02:33:06.027Z (1 day ago)
- Versions: 15
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 493 Last month
-
Rankings:
- Dependent packages count: 9.546%
- Average: 31.65%
- Dependent repos count: 53.755%
- Maintainers (1)
Score: 11.707867053120285