iucnn

Train neural networks based on geographic species occurrences, environmental data and existing IUCN Red List assessments to predict the conservation status of "Not Evaluated" species, for any taxon or geographic region of interest. https://iucnn.github.io/IUCNN/

https://github.com/iucnn/iucnn

Science Score: 59.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    1 of 7 committers (14.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (18.9%) to scientific vocabulary

Keywords

conservation conservation-prioritization deep-learning machine-learning tensorflow
Last synced: 4 months ago · JSON representation

Repository

Train neural networks based on geographic species occurrences, environmental data and existing IUCN Red List assessments to predict the conservation status of "Not Evaluated" species, for any taxon or geographic region of interest. https://iucnn.github.io/IUCNN/

Basic Info
  • Host: GitHub
  • Owner: IUCNN
  • Language: R
  • Default Branch: master
  • Homepage:
  • Size: 907 MB
Statistics
  • Stars: 29
  • Watchers: 5
  • Forks: 7
  • Open Issues: 10
  • Releases: 2
Topics
conservation conservation-prioritization deep-learning machine-learning tensorflow
Created over 5 years ago · Last pushed about 1 year ago
Metadata Files
Readme Changelog Codemeta

README.md

Project Status: Active – The project has reached a stable, usable state and is being actively developed. DOI R-CMD-check <!-- badges: end -->

IUCNN has been updated to version 3.0 on github and will shortly be updated on CRAN to adapt to the retirement of sp and raster. The update may not be compatible with analysis-pipelines build with version 2.x

IUCNN

Batch estimation of species' IUCN Red List threat status using neural networks.

Installation

  1. Install IUCNN directly from Github using devtools (some users, will need to start from the step 2 before installing the package). ```r install.packages("devtools") library(devtools)

install_github("IUCNN/IUCNN") ```

  1. Since some of IUCNNs functions are run in Python, IUCNN needs to set up a Python environment. This is easily done from within R, using the install_miniconda() function of the package reticulate (this will need c. 3 GB disk space). If problems occur at this step, check the excellent documentation of reticulate. r install.packages("reticulate") library(reticulate) install_miniconda()

  2. Install the tensorflow python library. Note that you may need a fresh R session to run the following code. r install_github("rstudio/tensorflow") library(tensorflow) install_tensorflow()

  3. Install the npBNN python library from Github:

r reticulate::py_install("https://github.com/dsilvestro/npBNN/archive/refs/tags/v0.1.11.tar.gz", pip = TRUE)

Usage

There are multiple models and features available in IUCNN. A vignette with a detailed tutorial on how to use those is available as part of the package: vignette("Approximate_IUCN_Red_List_assessments_with_IUCNN"). Running IUCNN will write files to your working directory.

A simple example run for terrestrial orchids (This will take about 5 minutes and download ~500MB of data for feature preparation into the working directory):

```r library(tidyverse) library(IUCNN)

load example data

data("trainingocc") #geographic occurrences of species with IUCN assessment data("traininglabels")# the corresponding IUCN assessments data("prediction_occ") #occurrences from Not Evaluated species to prdict

1. Feature and label preparation

features <- iucnnpreparefeatures(trainingocc) # Training features labelstrain <- iucnnpreparelabels(x = traininglabels, y = features) # Training labels featurespredict <- iucnnpreparefeatures(prediction_occ) # Prediction features

2. Model training

m1 <- iucnntrainmodel(x = features, lab = labels_train)

summary(m1) plot(m1)

3. Prediction

iucnnpredictstatus(x = featurespredict, model = m1) `` Additional features quantifying phylogenetic relationships and geographic sampling bias are available viaiucnnphylogeneticfeaturesandiucnnbias_features`.

With model testing

```r library(tidyverse) library(IUCNN)

load example data

data("trainingocc") #geographic occurrences of species with IUCN assessment data("traininglabels")# the corresponding IUCN assessments data("prediction_occ") #occurrences from Not Evaluated species to predict

Feature and label preparation

features <- iucnnpreparefeatures(trainingocc) # Training features labelstrain <- iucnnpreparelabels(x = traininglabels, y = features) # Training labels featurespredict <- iucnnpreparefeatures(prediction_occ) # Prediction features

Model testing

For illustration models differing in dropout rate and number of layers

modtest <- iucnnmodeltest(x = features, lab = labelstrain, mode = "nn-class", dropoutrate = c(0.0, 0.1, 0.3), nlayers = c("30", "4020", "503010"), cvfold = 5, initlogfile = TRUE)

Select best model

mbest <- iucnnbestmodel(x = modtest, criterion = "valacc", requiredropout = TRUE)

Inspect model structure and performance

summary(mbest) plot(mbest)

Train the best model on all training data for prediction

mprod <- iucnntrainmodel(x = features, lab = labelstrain, productionmodel = mbest)

Predict RL categories for target species

pred <- iucnnpredictstatus(x = featurespredict, model = mprod) plot(pred)

```

Using a convolutional neural network

```r features <- iucnncnnfeatures(trainingocc) # Training features labelstrain <- iucnnpreparelabels(x = traininglabels, y = features) # Training labels featurespredict <- iucnncnnfeatures(prediction_occ) # Prediction features

```

Citation

r library(IUCNN) citation("IUCNN")

Zizka A, Andermann T, Silvestro D (2022). "IUCNN - Deep learning approaches to approximate species’ extinction risk." Diversity and Distributions, 28(2):227-241 doi: 10.1111/ddi.13450.

Zizka A, Silvestro D, Vitt P, Knight T (2021). “Automated conservation assessment of the orchid family with deep learning.” Conservation Biology, 35(3):897-908, doi: doi.org/10.1111/cobi.13616

Owner

  • Name: IUCNN
  • Login: IUCNN
  • Kind: organization

CodeMeta (codemeta.json)

{
  "@context": [
    "https://doi.org/10.5063/schema/codemeta-2.0",
    "http://schema.org"
  ],
  "@type": "SoftwareSourceCode",
  "identifier": "IUCNN",
  "description": "Train neural networks based on geographic species occurrences, environmental data and existing IUCN Red List assessments to predict the conservation status of \"Not Evaluated\" or \"Data Deficient\" species, for any taxon or geographic region of interest.",
  "name": "IUCNN: Neural Networks to Approximate IUCN Red List Conservation Assessments",
  "codeRepository": "https://github.com/azizka/IUCNN",
  "issueTracker": "https://github.com/azizka/IUCNN/issues",
  "license": "https://spdx.org/licenses/LGPL-2.1",
  "version": "1.0.0",
  "programmingLanguage": {
    "@type": "ComputerLanguage",
    "name": "R",
    "url": "https://r-project.org"
  },
  "runtimePlatform": "R Under development (unstable) (2020-10-12 r79333)",
  "author": [
    {
      "@type": "Person",
      "givenName": "Alexander",
      "familyName": "Zizka",
      "email": "alexander.zizka@idiv.de"
    }
  ],
  "contributor": [
    {
      "@type": "Person",
      "givenName": "Tobias",
      "familyName": "Andermann"
    },
    {
      "@type": "Person",
      "givenName": "Daniele",
      "familyName": "Silvestro"
    }
  ],
  "copyrightHolder": {},
  "funder": {},
  "maintainer": [
    {
      "@type": "Person",
      "givenName": "Alexander",
      "familyName": "Zizka",
      "email": "alexander.zizka@idiv.de"
    }
  ],
  "softwareSuggestions": [
    {
      "@type": "SoftwareApplication",
      "identifier": "covr",
      "name": "covr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=covr"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "knitr",
      "name": "knitr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=knitr"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "rmarkdown",
      "name": "rmarkdown",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=rmarkdown"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "spelling",
      "name": "spelling",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=spelling"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "testthat",
      "name": "testthat",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=testthat"
    }
  ],
  "softwareRequirements": [
    {
      "@type": "SoftwareApplication",
      "identifier": "checkmate",
      "name": "checkmate",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=checkmate"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "curl",
      "name": "curl",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=curl"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "dplyr",
      "name": "dplyr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=dplyr"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "graphics",
      "name": "graphics"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "grDevices",
      "name": "grDevices"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "magrittr",
      "name": "magrittr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=magrittr"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "rCAT",
      "name": "rCAT",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=rCAT"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "raster",
      "name": "raster",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=raster"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "readr",
      "name": "readr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=readr"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "reticulate",
      "name": "reticulate",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=reticulate"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "sf",
      "name": "sf",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=sf"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "stats",
      "name": "stats"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "tidyr",
      "name": "tidyr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=tidyr"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "tidyselect",
      "name": "tidyselect",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=tidyselect"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "R",
      "name": "R",
      "version": ">= 2.10"
    }
  ],
  "releaseNotes": "https://github.com/azizka/IUCNN/blob/master/NEWS.md",
  "fileSize": "167833.622KB",
  "developmentStatus": "https://www.repostatus.org/#active",
  "citation": [
    {
      "@type": "ScholarlyArticle",
      "datePublished": "2020",
      "author": [
        {
          "@type": "Person",
          "givenName": "Alexander",
          "familyName": "Zizka"
        },
        {
          "@type": "Person",
          "givenName": "Daniele",
          "familyName": "Silvestro"
        },
        {
          "@type": "Person",
          "givenName": "Pati",
          "familyName": "Vitt"
        },
        {
          "@type": "Person",
          "givenName": "Tiffany",
          "familyName": "Knight"
        }
      ],
      "name": "Automated conservation assessment of the orchid family with deep learning",
      "identifier": "doi.org/10.1111/cobi.13616",
      "url": "https://github.com/azizka/IUCNN",
      "pagination": "0",
      "isPartOf": {
        "@type": "PublicationIssue",
        "issueNumber": "0",
        "datePublished": "2020",
        "isPartOf": {
          "@type": [
            "PublicationVolume",
            "Periodical"
          ],
          "name": "Conservation Biology"
        }
      }
    }
  ]
}

GitHub Events

Total
  • Watch event: 3
  • Issue comment event: 3
  • Fork event: 1
Last Year
  • Watch event: 3
  • Issue comment event: 3
  • Fork event: 1

Committers

Last synced: 4 months ago

All Time
  • Total Commits: 341
  • Total Committers: 7
  • Avg Commits per committer: 48.714
  • Development Distribution Score (DDS): 0.569
Past Year
  • Commits: 33
  • Committers: 1
  • Avg Commits per committer: 33.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Alexander Zizka z****r@g****m 147
Tobias Andermann t****n@b****e 122
BrunoVilela b****a@h****m 33
Daniele Silvestro s****e@g****m 24
Alexander Zizka (local) z****l@p****E 10
tandermann t****n@e****e 4
Matthias Grenié m****e@e****r 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 57
  • Total pull requests: 1
  • Average time to close issues: 5 months
  • Average time to close pull requests: 2 days
  • Total issue authors: 13
  • Total pull request authors: 1
  • Average comments per issue: 1.33
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • azizka (32)
  • ricardosegovia (6)
  • Orange-chen-PEAR (4)
  • tandermann (4)
  • PabloMLucas (3)
  • sandro-unibe (1)
  • Lucmas9 (1)
  • samkands (1)
  • luannpedro (1)
  • brenaac (1)
  • zhaoyiliu (1)
  • collisilva (1)
  • akarolinamoreno (1)
Pull Request Authors
  • Rekyt (1)
Top Labels
Issue Labels
enhancement (12) documentation (4) bug (2)
Pull Request Labels

Dependencies

.github/workflows/R-CMD-check.yaml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/upload-artifact main composite
  • r-lib/actions/setup-pandoc v1 composite
  • r-lib/actions/setup-r v1 composite
DESCRIPTION cran
  • R >= 4.1 depends
  • PVR * imports
  • checkmate * imports
  • curl * imports
  • dplyr * imports
  • grDevices * imports
  • graphics * imports
  • magrittr * imports
  • missForest * imports
  • rCAT * imports
  • raster * imports
  • readr * imports
  • reticulate * imports
  • sf * imports
  • stats * imports
  • terra * imports
  • tidyr * imports
  • tidyselect * imports
  • ape * suggests
  • covr * suggests
  • knitr * suggests
  • markdown * suggests
  • rmarkdown * suggests
  • sampbias * suggests
  • spelling * suggests
  • testthat * suggests