portalcasting

portalcasting: Supporting automated forecasting of rodent populations - Published in JOSS (2022)

https://github.com/weecology/portalcasting

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 6 DOI reference(s) in README
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    1 of 8 committers (12.5%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.5%) to scientific vocabulary

Keywords

ecology forecasting portal r r-package r-stats reproducible-research shiny workflow

Keywords from Contributors

community-ecology small-mammal-trapping data-retrieval hacktobefest
Last synced: 6 months ago · JSON representation

Repository

Model development, deployment, and evaluation for forecasting Portal ecosystem dynamics

Basic Info
Statistics
  • Stars: 8
  • Watchers: 4
  • Forks: 10
  • Open Issues: 28
  • Releases: 79
Topics
ecology forecasting portal r r-package r-stats reproducible-research shiny workflow
Created almost 8 years ago · Last pushed 10 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Codemeta Zenodo

README.md

Supporting automated forecasting of rodent populations

hexagon software logo, light grey blue background, basic lettering at the top says portalcasting, main image is a drawn all black rodent standing on two feet with a fishing rod in hand and a brown fishing hat on head, standing next to a tan and green tackle box.

R-CMD-check Docker Codecov test coverage Lifecycle:maturing Project Status: Active – The project has reached a stable, usable state and is being actively developed. License DOI NSF-1929730 JOSS

Overview

The portalcasting package offers a comprehensive system for developing, deploying, and evaluating ecological models that forecast changes in ecological systems over time. It particularly focuses on the long-term study of mammal population and community dynamics, known as the Portal Project.

Core Depedencies

The portalcasting package depends on the PortalData and portalr packages.

  • PortalData is the collection of all the Portal project data.
  • portalr is a collection of functions to summarize the Portal data.

The portalcasting package integrates the PortalData repository and the portalr data management package into a streamlined pipeline. This pipeline is used to forecast.

The functionality of portalcasting extends beyond its deployment, as its functions are portable. This allows users to establish a fully-functional replica repository on either a local or remote machine, facilitating the development and testing of new models within a sandbox environment.

Current deployment:

The Portal-forecasts houses tools that leverage the portalcasting pipeline to generate weekly forecasts. The forecasts are then showcased on the Portal Forecasts website. This website offers users an interactive interface to explore the forecasting results. The source code for this website is hosted on GitHub. Additionally, the portal-forecasts repository archives the forecasts on both GitHub and Zenodo

Docker Container

We leverage a Docker container to enable reproducibility of the Portal forecasting. Presently, we use a Docker image of the software environment to create a container for running the code. The image is automatically rebuilt when there is a new portalcasting release, tagged with both the latest and version-specific (vX.X.X) tags, and pushed to DockerHub.

Because the latest image is updated with releases, the current main branch code in portalcasting is typically, but not necessarily always, being executed within the predictions repository.

The API is actively developed and welcomes any contributors.

Installation

You can install the package from github:

r install.packages("remotes") remotes::install_github("weecology/portalcasting")

You will need to install rjags and JAGS.

MacOS users are recommended to install rjags after reading the instructions on the package's README file, or use the JAGS discussion forum thread for help under the MacOS installation of JAGS.

r install.packages("rjags", configure.args="--enable-rpath")

Production environment

If you wish to spin up a local container from the latest portalcasting image (to ensure that you are using a copy of the current production environment for implementation of the portalcasting pipeline), you can run

sudo docker pull weecology/portalcasting from a shell on a computer with Docker installed.

Usage

Get started with the "how to set up a Portal Predictions directory" vignette.

If you are interested in adding a model to the preloaded set of models, see the "adding a model and data" vignette. That document also details how to expand the datasets available to new and existing models.

Developer and Contributor notes

We welcome any contributions in form of models or pipeline changes.

For the workflow, please checkout the contribution and code of conduct pages.

Acknowledgements

This project is developed in active collaboration with DAPPER Stats.

The motivating study—the Portal Project—has been funded nearly continuously since 1977 by the National Science Foundation, most recently by DEB-1622425 to S. K. M. Ernest. Much of the computational work was supported by the Gordon and Betty Moore Foundation’s Data-Driven Discovery Initiative through Grant GBMF4563 to E. P. White.

We thank Heather Bradley for logistical support, John Abatzoglou for assistance with climate forecasts, and James Brown for establishing the Portal Project.

Owner

  • Name: Weecology
  • Login: weecology
  • Kind: organization

CodeMeta (codemeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "@type": "SoftwareSourceCode",
  "identifier": "portalcasting",
  "description": "Create a directory, populate it with data, build models, forecast rodent populations, and visualize the results. This package provides the functionality underlying the Portal Predictions forecasts Project <https://github.com/weecology/portal-forecasts> as well as support for exploring and developing new models in sandbox environments.",
  "name": "portalcasting: Functions Used in Predicting Portal Rodent Dynamics",
  "relatedLink": "https://weecology.github.io/portalcasting/",
  "codeRepository": "https://github.com/weecology/portalcasting",
  "issueTracker": "https://github.com/weecology/portalcasting/issues",
  "license": "https://spdx.org/licenses/MIT",
  "version": "0.51.0",
  "programmingLanguage": {
    "@type": "ComputerLanguage",
    "name": "R",
    "url": "https://r-project.org"
  },
  "runtimePlatform": "R version 4.2.2 (2022-10-31 ucrt)",
  "author": [
    {
      "@type": "Person",
      "givenName": [
        "Juniper",
        "L."
      ],
      "familyName": "Simonis",
      "email": "juniper.simonis@weecology.org",
      "@id": "https://orcid.org/0000-0001-9798-0460"
    },
    {
      "@type": "Person",
      "givenName": [
        "Glenda",
        "M."
      ],
      "familyName": "Yenni",
      "@id": "https://orcid.org/0000-0001-6969-1848"
    },
    {
      "@type": "Person",
      "givenName": [
        "Ellen",
        "K."
      ],
      "familyName": "Bledsoe",
      "@id": "https://orcid.org/0000-0002-3629-7235"
    },
    {
      "@type": "Person",
      "givenName": [
        "Erica",
        "M."
      ],
      "familyName": "Christensen",
      "@id": "https://orcid.org/0000-0002-5635-2502"
    },
    {
      "@type": "Person",
      "givenName": "Henry",
      "familyName": "Senyondo",
      "@id": "https://orcid.org/0000-0001-7105-5808"
    },
    {
      "@type": "Person",
      "givenName": "Hao",
      "familyName": "Ye",
      "@id": "https://orcid.org/0000-0002-8630-1458"
    },
    {
      "@type": "Person",
      "givenName": [
        "Ethan",
        "P."
      ],
      "familyName": "White",
      "@id": "https://orcid.org/0000-0001-6728-7745"
    },
    {
      "@type": "Person",
      "givenName": [
        "S. K.",
        "Morgan"
      ],
      "familyName": "Ernest",
      "@id": "https://orcid.org/0000-0002-6026-8530"
    }
  ],
  "maintainer": [
    {
      "@type": "Person",
      "givenName": [
        "Juniper",
        "L."
      ],
      "familyName": "Simonis",
      "email": "juniper.simonis@weecology.org",
      "@id": "https://orcid.org/0000-0001-9798-0460"
    }
  ],
  "softwareSuggestions": [
    {
      "@type": "SoftwareApplication",
      "identifier": "pkgdown",
      "name": "pkgdown",
      "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=pkgdown"
    },
    {
      "@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": {
    "1": {
      "@type": "SoftwareApplication",
      "identifier": "R",
      "name": "R",
      "version": ">= 3.5.0"
    },
    "2": {
      "@type": "SoftwareApplication",
      "identifier": "forecast",
      "name": "forecast",
      "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=forecast"
    },
    "3": {
      "@type": "SoftwareApplication",
      "identifier": "hypergeo",
      "name": "hypergeo",
      "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=hypergeo"
    },
    "4": {
      "@type": "SoftwareApplication",
      "identifier": "tscount",
      "name": "tscount",
      "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=tscount"
    },
    "5": {
      "@type": "SoftwareApplication",
      "identifier": "arrow",
      "name": "arrow",
      "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=arrow"
    },
    "6": {
      "@type": "SoftwareApplication",
      "identifier": "bslib",
      "name": "bslib",
      "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=bslib"
    },
    "7": {
      "@type": "SoftwareApplication",
      "identifier": "coda",
      "name": "coda",
      "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=coda"
    },
    "8": {
      "@type": "SoftwareApplication",
      "identifier": "english",
      "name": "english",
      "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=english"
    },
    "9": {
      "@type": "SoftwareApplication",
      "identifier": "htmltools",
      "name": "htmltools",
      "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=htmltools"
    },
    "10": {
      "@type": "SoftwareApplication",
      "identifier": "httr",
      "name": "httr",
      "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=httr"
    },
    "11": {
      "@type": "SoftwareApplication",
      "identifier": "jsonlite",
      "name": "jsonlite",
      "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=jsonlite"
    },
    "12": {
      "@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"
    },
    "13": {
      "@type": "SoftwareApplication",
      "identifier": "markdown",
      "name": "markdown",
      "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=markdown"
    },
    "14": {
      "@type": "SoftwareApplication",
      "identifier": "portalr",
      "name": "portalr",
      "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=portalr"
    },
    "15": {
      "@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"
    },
    "16": {
      "@type": "SoftwareApplication",
      "identifier": "runjags",
      "name": "runjags",
      "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=runjags"
    },
    "17": {
      "@type": "SoftwareApplication",
      "identifier": "scoringRules",
      "name": "scoringRules",
      "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=scoringRules"
    },
    "18": {
      "@type": "SoftwareApplication",
      "identifier": "shiny",
      "name": "shiny",
      "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=shiny"
    },
    "19": {
      "@type": "SoftwareApplication",
      "identifier": "stats",
      "name": "stats"
    },
    "20": {
      "@type": "SoftwareApplication",
      "identifier": "viridis",
      "name": "viridis",
      "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=viridis"
    },
    "21": {
      "@type": "SoftwareApplication",
      "identifier": "yaml",
      "name": "yaml",
      "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=yaml"
    },
    "SystemRequirements": "JAGS 4.x.y; libcurl; gsl"
  },
  "fileSize": "1602.8KB",
  "citation": [
    {
      "@type": "ScholarlyArticle",
      "datePublished": "2022",
      "author": [
        {
          "@type": "Person",
          "givenName": [
            "Juniper",
            "L."
          ],
          "familyName": "Simonis"
        },
        {
          "@type": "Person",
          "givenName": [
            "Glenda",
            "M."
          ],
          "familyName": "Yenni"
        },
        {
          "@type": "Person",
          "givenName": [
            "Ellen",
            "K."
          ],
          "familyName": "Bledsoe"
        },
        {
          "@type": "Person",
          "givenName": [
            "Erica",
            "M."
          ],
          "familyName": "Christensen"
        },
        {
          "@type": "Person",
          "givenName": "Henry",
          "familyName": "Senyondo"
        },
        {
          "@type": "Person",
          "givenName": [
            "Shawn",
            "D."
          ],
          "familyName": "Taylor"
        },
        {
          "@type": "Person",
          "givenName": "Hao",
          "familyName": "Ye"
        },
        {
          "@type": "Person",
          "givenName": [
            "Ethan",
            "P."
          ],
          "familyName": "White"
        },
        {
          "@type": "Person",
          "givenName": [
            "S.",
            "K.",
            "Morgan"
          ],
          "familyName": "Ernest"
        }
      ],
      "name": "portalcasting: Supporting automated forecasting of rodent populations",
      "identifier": "10.21105/joss.03220",
      "pagination": "3220",
      "@id": "https://doi.org/10.21105/joss.03220",
      "sameAs": "https://doi.org/10.21105/joss.03220",
      "isPartOf": {
        "@type": "PublicationIssue",
        "issueNumber": "72",
        "datePublished": "2022",
        "isPartOf": {
          "@type": [
            "PublicationVolume",
            "Periodical"
          ],
          "volumeNumber": "7",
          "name": "Journal of Open Source Software"
        }
      }
    }
  ],
  "releaseNotes": "https://github.com/weecology/portalcasting/blob/master/NEWS.md",
  "readme": "https://github.com/weecology/portalcasting/blob/main/README.md",
  "contIntegration": [
    "https://github.com/weecology/portalcasting/actions/workflows/check-release.yaml",
    "https://github.com/weecology/portalcasting/actions/workflows/docker-publish.yml",
    "https://codecov.io/github/weecology/portalcasting/branch/main"
  ],
  "developmentStatus": [
    "https://lifecycle.r-lib.org/articles/stages.html",
    "https://www.repostatus.org/#active"
  ],
  "keywords": [
    "ecology",
    "forecasting",
    "portal",
    "r",
    "r-package",
    "r-stats",
    "reproducible-research",
    "shiny",
    "workflow"
  ]
}

GitHub Events

Total
  • Release event: 1
  • Push event: 8
  • Pull request event: 4
  • Create event: 3
Last Year
  • Release event: 1
  • Push event: 8
  • Pull request event: 4
  • Create event: 3

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 1,549
  • Total Committers: 8
  • Avg Commits per committer: 193.625
  • Development Distribution Score (DDS): 0.056
Past Year
  • Commits: 5
  • Committers: 1
  • Avg Commits per committer: 5.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
juniperlsimonis d****s@g****m 1,462
henry senyondo h****e@g****m 32
Glenda g****i 22
Ethan White e****n@w****g 16
Hao Ye l****d@g****m 13
skmorgane m****n@w****g 2
Pat Dumandan p****a@u****u 1
Arfon Smith a****n 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 23
  • Total pull requests: 90
  • Average time to close issues: 10 months
  • Average time to close pull requests: 7 days
  • Total issue authors: 4
  • Total pull request authors: 6
  • Average comments per issue: 0.7
  • Average comments per pull request: 0.49
  • Merged pull requests: 65
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 4
  • Average time to close issues: N/A
  • Average time to close pull requests: 2 days
  • Issue authors: 0
  • Pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.5
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • juniperlsimonis (20)
  • nicholasjclark (1)
  • henrykironde (1)
  • himanshu-02 (1)
Pull Request Authors
  • juniperlsimonis (54)
  • henrykironde (29)
  • gmyenni (4)
  • ha0ye (3)
  • ethanwhite (2)
  • skmorgane (2)
Top Labels
Issue Labels
bug (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 81
proxy.golang.org: github.com/weecology/portalcasting
  • Versions: 81
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago

Dependencies

DESCRIPTION cran
  • R >= 3.5.0 depends
  • coda * imports
  • forecast * imports
  • httr * imports
  • jsonlite * imports
  • portalr * imports
  • runjags * imports
  • scoringRules * imports
  • tscount * imports
  • viridis * imports
  • yaml * imports
  • english * suggests
  • knitr * suggests
  • markdown * suggests
  • pkgdown * suggests
  • rmarkdown * suggests
  • testthat * suggests
.github/workflows/docker-publish.yml actions
  • actions/checkout v2 composite
  • crazy-max/ghaction-docker-meta v1 composite
  • docker/build-push-action ad44023a93711e3deb337508980b4b5e9bcdc5dc composite
  • docker/login-action 28218f9b04b4f3f62068d7b6ce6ca5b26e35336c composite
  • r-lib/actions/setup-pandoc v1 composite
  • r-lib/actions/setup-r v1 composite
.github/workflows/pkgdown.yaml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • r-lib/actions/setup-pandoc v1 composite
  • r-lib/actions/setup-r v1 composite
.github/workflows/test-coverage.yaml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • r-lib/actions/setup-pandoc v1 composite
  • r-lib/actions/setup-r v1 composite
docker/Dockerfile docker
  • rocker/tidyverse latest build
.github/workflows/r-cmd-check.yaml actions
  • actions/checkout v3 composite
  • r-lib/actions/check-r-package v2 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/test-extra-examples.yaml actions
  • actions/checkout v3 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/test-extra-vignettes.yaml actions
  • actions/checkout v3 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite