A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.

Integrated Valuation of Ecosystem Services and Tradeoffs

A family of tools for quantifying the values of natural capital in clear, credible, and practical ways.
https://github.com/natcap/invest

Category: Sustainable Development
Sub Category: Sustainable Investment

Keywords

ecosystem-services geospatial gis

Keywords from Contributors

climate-model simulator measure tensor feature-toggle feature-flag sequencer unit-testing featured training

Last synced: about 13 hours ago
JSON representation

Repository metadata

InVEST®: models that map and value the goods and services from nature that sustain and fulfill human life.

README.rst

          InVEST: Integrated Valuation of Ecosystem Services and Tradeoffs
================================================================

InVEST (Integrated Valuation of Ecosystem Services and Tradeoffs) is a family
of tools for quantifying the values of natural capital in clear, credible, and
practical ways. In promising a return (of societal benefits) on investments in
nature, the scientific community needs to deliver knowledge and tools to
quantify and forecast this return. InVEST enables decision-makers to quantify
the importance of natural capital, to assess the tradeoffs associated with
alternative choices, and to integrate conservation and human development.

Older versions of InVEST ran as script tools in the ArcGIS ArcToolBox environment,
but have almost all been ported over to a purely open-source python environment.

.. note::
    **This repository is for InVEST 3.2.1 and later**

    This replaces our Google Code project formerly
    located at http://code.google.com/p/invest-natcap.  If you are looking to build
    InVEST <= 3.2.0, use the archived release-framework repository at
    https://bitbucket.org/natcap/invest-natcap.release-framework, and the InVEST repository
    at https://bitbucket.org/natcap/invest-natcap.invest-3.


General Information
-------------------

* Website: https://naturalcapitalproject.stanford.edu/software/invest
* Source code: https://github.com/natcap/invest
* Issue tracker: https://github.com/natcap/invest/issues
* Users' guide: https://storage.googleapis.com/releases.naturalcapitalproject.org/invest-userguide/latest/index.html
* API documentation: http://invest.readthedocs.io/en/latest/


Dependencies
------------

OS-specific installation instructions are found either online at
http://invest.readthedocs.io/en/latest/installing.html or locally at ``doc/api-docs/installing.rst``.

.. note::
    The ``make`` commands for InVEST require a BASH shell environment. Windows
    users can use Git Bash within the Git for Windows suite. More information
    can be found at https://gitforwindows.org

Managing python dependencies
++++++++++++++++++++++++++++
We recommend using a virtual environment to manage your python dependencies, and there is
a Makefile target to assist with this::

    $ make env
    $ source env/bin/activate

Or on Windows, use the following instead from a CMD prompt::

    > make env
    > .\env\bin\activate

This makefile target is included for convenience. It uses ``conda`` and installs packages from ``conda-forge``.
It also uses the `-p` flag with `conda create`, creating a `./env` folder containing the environment.

Using a different environment folder name
"""""""""""""""""""""""""""""""""""""""""
If you prefer a different path for your environment, you may pass the environment path as
a parameter to make::

    $ make ENV=myEnv env

You could then activate the environment created at ``./myEnv``.


Using a different environment management tool
"""""""""""""""""""""""""""""""""""""""""""""
You may of course choose to manage your own virtual environment without using the Makefile.

We suggest using ``conda`` or ``mamba`` and ``conda-forge``.

``requirements.txt``, ``requirements-dev.txt`` and ``requirements-docs.txt`` list the python
dependencies needed.

Installing ``natcap.invest`` from local source code
"""""""""""""""""""""""""""""""""""""""""""""""""""
From an activated virtual environment, it's safest to uninstall any existing installation
and then install `natcap.invest`::

    $ pip uninstall natcap.invest
    $ make install

In practice, it can be convenient to use an "editable install" instead to avoid needing
to uninstall & re-install after making changes to source code::

   $ pip install -e .

Note that with an editable install any changes to non-Python (Cython, C++) files will
require compilation using one of the above installation methods.

*The Workbench is not part of the* ``natcap.invest`` *Python package. See*
``workbench/readme.md`` *for developer details.*

A successful ``natcap.invest`` installation will include the InVEST CLI::

    $ invest list

Building InVEST Distributions
-----------------------------

Once the required tools and packages are available, we can build InVEST.
On Windows, you must indicate the location of the GDAL libraries with the environment
variable ``NATCAP_INVEST_GDAL_LIB_PATH``. If you are using conda to manage dependencies
as we recommend, you can add ``NATCAP_INVEST_GDAL_LIB_PATH="$CONDA_PREFIX/Library"`` to
the commands below. (On Mac and Linux, the gdal library path is determined for you
automatically using ``gdal-config``, which isn't available on Windows.)


Building ``natcap.invest`` python package
+++++++++++++++++++++++++++++++++++++++++

A Makefile target has been created for your convenience::

    $ make python_packages

This will create a wheel for your platform and a zip source archive in ``dist/``.
Both of these files (``dist/natcap.invest*.whl`` and ``dist/natcap.invest*.zip``)
can be installed by pip.

Building python packages without GNU make
"""""""""""""""""""""""""""""""""""""""""
Python distributions may be built with the standard distutils/setuptools commands::

    $ python -m pip install build
    $ python -m build --wheel
    $ python -m build --sdist

InVEST Standalone Binaries
++++++++++++++++++++++++++

Once the appropriate dependencies are available, InVEST can also be built as a
standalone application::

    $ make binaries

An important detail about building binaries is that ``natcap.invest`` must be
installed as a wheel to ensure that the distribution information is in the
correct location.

This will create a directory at ``dist/invest`` holding the application binaries
and relevant shared libraries.

Binaries cannot be cross-compiled for other operating systems.


InVEST Workbench
++++++++++++++++++++++++

See developer instructions at ``workbench/readme.md``.



Building InVEST Documentation
-----------------------------

User's Guide
++++++++++++

To build the user's guide::

    $ make userguide

This will build HTML and PDF documentation, writing them to ``dist/userguide``
and ``dist/InVEST_*_Documentation.pdf``, respectively.

The User's Guide is maintained in a separate git repository. InVEST will build
the User's Guide with the commit defined in the ``Makefile``::

   GIT_UG_REPO                 := https://github.com/natcap/invest.users-guide
   GIT_UG_REPO_PATH            := doc/users-guide
   GIT_UG_REPO_REV             := f203ec069f9f03560c9a85b268e67ebb6b994953


API Documentation
+++++++++++++++++

To build the ``natcap.invest`` python API documentation and developer's guide::

    $ make apidocs

This will build an HTML version of the API documentation, writing it to
``dist/apidocs``.


InVEST Sample Data
------------------

InVEST is typically distributed with sample data, though, in the interest of
disk space, these data are not included in any of the standard installers.  To
build zip archives of the sample data::

    $ make sampledata

This will write the data zipfiles to ``dist/data``. ``git`` command is needed.

Sample data is tracked in a ``git-lfs`` repo and will be packaged based on the commit
defined in the ``Makefile``::

   GIT_SAMPLE_DATA_REPO        := https://bitbucket.org/natcap/invest-sample-data.git
   GIT_SAMPLE_DATA_REPO_PATH   := $(DATA_DIR)/invest-sample-data
   GIT_SAMPLE_DATA_REPO_REV    := 0f8b41557753dad3670ba8220f41650b51435a93

Tests
-----

InVEST includes a battery of tests to ensure software quality.

Model tests
+++++++++++

To run tests on the suite of Ecosystem Service models in InVEST::

    $ make test

Tests depend on test data that is tracked in a ``git-lfs`` repo defined in the ``Makefile``::

   GIT_TEST_DATA_REPO          := https://bitbucket.org/natcap/invest-test-data.git
   GIT_TEST_DATA_REPO_PATH     := $(DATA_DIR)/invest-test-data
   GIT_TEST_DATA_REPO_REV      := 324abde73e1d770ad75921466ecafd1ec6297752

Test data (and Sample Data) can be retrieved using::

   $ make fetch


Changing how GNU make runs tests
++++++++++++++++++++++++++++++++

The InVEST Makefile setup depends on ``pytest`` and ``coverage`` to display
line coverage and produce HTML and XML reports.  You can force ``make`` to use
``coverage`` with a different test runner by setting a parameter at the
command line.  For example, to run the tests with ``nose``::

    $ make TESTRUNNER=nose test


Running tests on binaries
+++++++++++++++++++++++++++++++++++

This repository includes a python script to automatically
execute and check the exit status of all InVEST models, running on the
installed InVEST sample data. Once all sample data have been fetched
and binaries built on the target computer::

    $ make invest_autotest


Copyright and license information
---------------------------------

A file called ``LICENSE.txt`` should have accompanied this distribution.  If it
is missing, the license may be found on our project page,
https://github.com/natcap/invest

        

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 4 days ago

Total Commits: 15,002
Total Committers: 19
Avg Commits per committer: 789.579
Development Distribution Score (DDS): 0.665

Commits in past year: 996
Committers in past year: 9
Avg Commits per committer in past year: 110.667
Development Distribution Score (DDS) in past year: 0.729

Name Email Commits
James Douglass j****s@s****u 5027
davemfish d****h@g****m 3029
emlys e****h@s****u 2431
Rich Sharp r****p@g****m 2052
Joanna Lin c****4@g****m 875
Doug d****4@g****m 736
Will Bierbower w****w@s****u 244
dcdenu4 d****l@l****t 207
Emily Davis e****s@s****u 156
Claire Simpson c****n@s****u 109
Will Bierbower w****r@g****m 66
Emily e****y@E****l 33
Megan Nissel m****l@g****m 16
GitHub Actions 15
omahs 7****s 2
Tom Saleeba t****a@g****m 1
Will Bierbower w****2@u****u 1
Rolf Simoes r****s@o****g 1
newtpatrol 6****l 1

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 958
Total pull requests: 971
Average time to close issues: 5 months
Average time to close pull requests: 8 days
Total issue authors: 27
Total pull request authors: 17
Average comments per issue: 2.05
Average comments per pull request: 0.99
Merged pull request: 827
Bot issues: 7
Bot pull requests: 170

Past year issues: 175
Past year pull requests: 199
Past year average time to close issues: about 2 months
Past year average time to close pull requests: 5 days
Past year issue authors: 14
Past year pull request authors: 11
Past year average comments per issue: 1.2
Past year average comments per pull request: 0.47
Past year merged pull request: 162
Past year bot issues: 0
Past year bot pull requests: 18

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/natcap/invest

Top Issue Authors

  • phargogh (282)
  • davemfish (256)
  • emlys (191)
  • dcdenu4 (151)
  • newtpatrol (16)
  • richpsharp (11)
  • emilyanndavis (11)
  • github-actions[bot] (7)
  • claire-simpson (5)
  • mlacayoemery (4)
  • jagoldstein (4)
  • silviafranceschi (3)
  • megannissel (2)
  • jsta (2)
  • g2giovanni (1)

Top Pull Request Authors

  • emlys (237)
  • phargogh (218)
  • github-actions[bot] (168)
  • davemfish (167)
  • dcdenu4 (95)
  • emilyanndavis (40)
  • claire-simpson (13)
  • richpsharp (9)
  • natcap-bot (8)
  • megannissel (7)
  • R-Stev (2)
  • dependabot[bot] (2)
  • rolfsimoes (1)
  • TrellixVulnTeam (1)
  • newtpatrol (1)

Top Issue Labels

  • bug (380)
  • in progress (314)
  • enhancement (197)
  • task (152)
  • workbench (122)
  • question (80)
  • good first issue (58)
  • actions (47)
  • resolved (47)
  • critical (43)
  • documentation (40)
  • on hold (38)
  • wontfix (28)
  • science request (25)
  • proposal (17)
  • icebox (12)
  • invalid (11)
  • help wanted (4)
  • duplicate (3)
  • dependencies (1)

Top Pull Request Labels

  • auto (146)
  • bug (8)
  • enhancement (6)
  • critical (4)
  • in progress (4)
  • dependencies (2)
  • workbench (1)
  • wontfix (1)
  • task (1)
  • documentation (1)
  • proposal (1)
  • on hold (1)
  • github_actions (1)

Package metadata

pypi.org: natcap.invest

InVEST Ecosystem Service models

  • Homepage:
  • Documentation: https://natcap.invest.readthedocs.io/
  • Licenses: apache-2.0
  • Latest release: 3.15.0 (published 23 days ago)
  • Last Synced: 2025-04-25T13:05:59.106Z (1 day ago)
  • Versions: 36
  • Dependent Packages: 2
  • Dependent Repositories: 8
  • Downloads: 4,601 Last month
  • Rankings:
    • Dependent packages count: 3.165%
    • Dependent repos count: 5.161%
    • Average: 7.264%
    • Downloads: 13.466%
  • Maintainers (4)
conda-forge.org: natcap.invest

InVEST (Integrated Valuation of Ecosystem Services and Tradeoffs) is a family of tools for quantifying the values of natural capital in clear, credible, and practical ways. In promising a return (of societal benefits) on investments in nature, the scientific community needs to deliver knowledge and tools to quantify and forecast this return. InVEST enables decision-makers to quantify the importance of natural capital, to assess the tradeoffs associated with alternative choices, and to integrate conservation and human development.

  • Homepage: https://github.com/natcap/invest
  • Licenses: Apache-2.0
  • Latest release: 3.12.0 (published over 2 years ago)
  • Last Synced: 2025-04-25T13:06:11.138Z (1 day ago)
  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Forks count: 27.133%
    • Stargazers count: 33.132%
    • Dependent repos count: 34.025%
    • Average: 36.366%
    • Dependent packages count: 51.175%

Dependencies

workbench/package.json npm
  • @babel/cli ^7.13.10 development
  • @babel/plugin-transform-runtime ^7.13.10 development
  • @babel/preset-env ^7.13.10 development
  • @babel/preset-react ^7.12.13 development
  • @babel/register ^7.13.8 development
  • @testing-library/dom ^8.1.0 development
  • @testing-library/jest-dom ^5.14.1 development
  • @testing-library/react ^12.0.0 development
  • @testing-library/user-event ^13.5.0 development
  • @vitejs/plugin-react ^1.2.0 development
  • babel-eslint ^10.1.0 development
  • bootstrap 4.3.1 development
  • concurrently ^7.0.0 development
  • cross-env ^7.0.3 development
  • electron ^18.2.4 development
  • electron-builder ^23.0.3 development
  • electron-devtools-installer ^3.2.0 development
  • eslint ^7.21.0 development
  • eslint-config-airbnb ^18.2.1 development
  • eslint-plugin-import ^2.22.1 development
  • eslint-plugin-jest ^24.2.1 development
  • eslint-plugin-jsdoc ^31.6.1 development
  • eslint-plugin-jsx-a11y ^6.4.1 development
  • eslint-plugin-react ^7.22.0 development
  • eslint-plugin-react-hooks ^4.2.0 development
  • fs-extra ^9.1.0 development
  • jest ^27.4.7 development
  • pptr-testing-library ^0.6.4 development
  • puppeteer-core ^9.1.1 development
  • react ^17.0.1 development
  • react-bootstrap ^1.5.2 development
  • react-devtools ^4.10.1 development
  • react-dom ^17.0.1 development
  • react-icons ^4.3.1 development
  • rimraf ^3.0.2 development
  • vite ^2.8.3 development
  • yazl ^2.5.1 development
  • @babel/runtime ^7.13.10
  • electron-log ^4.3.5
  • gettext-parser ^4.2.0
  • gettext.js ^1.0.1
  • localforage ^1.9.0
  • node-fetch ^2.6.7
  • prop-types ^15.7.2
  • sanitize-html ^2.2.0
  • yauzl ^2.10.0
workbench/yarn.lock npm
  • 1006 dependencies
requirements-dev.txt pypi
  • Cython *
  • PyInstaller >=4.10
  • Sphinx >=1.3.1,
  • build *
  • coverage *
  • pypiwin32 *
  • pytest *
  • pytest-subtests *
  • requests *
  • setuptools >=8.0
  • setuptools_scm >=6.4.0
  • sphinx-intl *
  • sphinx-reredirects *
  • sphinx-rtd-theme *
  • virtualenv >=12.0.1
  • wheel >=0.27.0
  • xlwt *
requirements.txt pypi
  • Babel *
  • Pyro4 ==4.77
  • Rtree >=0.8.2,
  • chardet >=3.0.4
  • numpy >=1.11.0,
  • openpyxl *
  • pandas >=1.2.1
  • pint *
  • psutil >=5.6.6
  • pygeoprocessing >=2.3.2
  • scipy >=1.6.0
  • taskgraph >=0.11.0
.github/actions/setup_env/action.yml actions
  • actions/setup-python v4 composite
  • mamba-org/provision-with-micromamba main composite
.github/workflows/auto-pr-from-main-into-releases.yml actions
  • actions/checkout v3 composite
.github/workflows/build-and-test.yml actions
  • ./.github/actions/setup_env * composite
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/setup-node v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • dawidd6/action-download-artifact v2 composite
  • google-github-actions/auth v0 composite
  • google-github-actions/setup-gcloud v0 composite
requirements-docs.txt pypi
  • Sphinx >=1.3.1,
  • sphinx-intl *
  • sphinx-reredirects *
  • sphinx-rtd-theme *
.github/actions/rollback_release/action.yml actions
.github/workflows/release-part-1.yml actions
  • ./.github/actions/rollback_release * composite
  • actions/checkout v3 composite
.github/workflows/release-part-2.yml actions
  • ./.github/actions/rollback_release * composite
  • actions/checkout v3 composite
pyproject.toml pypi
setup.py pypi

Score: 17.24513730170149