Giter Site home page Giter Site logo

deeeeksha / covidcast-indicators Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cmu-delphi/covidcast-indicators

0.0 0.0 0.0 76.9 MB

Back end for producing indicators and loading them into the COVIDcast API.

Home Page: https://cmu-delphi.github.io/delphi-epidata/api/covidcast.html

License: MIT License

Python 59.29% R 23.48% Shell 0.55% Jupyter Notebook 13.76% Makefile 1.21% Jinja 1.57% C++ 0.10% Dockerfile 0.05%

covidcast-indicators's Introduction

Covidcast Indicators

License: MIT

In early April 2020, Delphi developed a uniform data schema for a new Epidata endpoint focused on COVID-19. Our intent was to provide signals that would track in real-time and in fine geographic granularity all facets of the COVID-19 pandemic, aiding both nowcasting and forecasting. Delphi's long history in tracking and forecasting influenza made us uniquely situated to provide access to data streams not available anywhere else, including medical claims data, electronic medical records, lab test records, massive public surveys, and internet search trends. We also process commonly-used publicly-available data sources, both for user convenience and to provide data versioning for sources that do not track revisions themselves.

Each data stream arrives in a different format using a different delivery technique, be it sftp, an access-controlled API, or an email attachment. The purpose of each pipeline in this repository is to fetch the raw source data, extract informative aggregate signals, and output those signals---which we call COVID-19 indicators---in a common format for upload to the COVIDcast API.

For client access to the API, along with a variety of other utilities, see our R and Python packages.

For interactive visualizations (of a subset of the available indicators), see our COVIDcast map.

Organization

Utilities:

  • _delphi_utils_python - common behaviors
  • _template_python & _template_r - starting points for new data sources
  • ansible & jenkins - automated testing and deployment
  • sir_complainsalot - a Slack bot to check for missing data

Indicator pipelines: all remaining directories.

Each indicator pipeline includes its own documentation.

  • Consult README.md for directions to install, lint, test, and run the pipeline for that indicator.
  • Consult REVIEW.md for the checklist to use for code reviews.
  • Consult DETAILS.md (if present) for implementation details, including handling of corner cases.

Development

prod reflects what is currently in production. main is the staging branch for the next release.

  1. Branch from main to develop a new change
  2. PR into main and assign a reviewer (or tag someone) to get feedback on your change. List the issue number under Fixes if your change resolves an existing GitHub Issue.
  3. Add new commits to your branch in response to feedback.
  4. When approved, tag an admin to merge the PR. Let them know if this change should be released immediately, at a set future date, or if it can just go along for the ride whenever the next release happens.

Release Process

The release process consists of multiple steps which can all be done via the GitHub website:

  1. Go to create_release GitHub Action and click the Run workflow dropdown button. Leave branch as main unless you know what you're doing. Enter the type of release (patch: bugfixes, params file changes, new signals for existing indicators; minor: new indicators, new utilities; major: backwards-incompatible changes requiring substantial refactoring) and GitHub will automatically compute the next version number for you; alternately, specify the version number by hand. Hit the green Run workflow button.
  2. The action will prepare a new release and generate an associated Pull Request.
  3. Edit the PR description and list all pull requests included in this release. This is a manual step to make sure you are aware of 100% of the changes that will be deployed. You can use #xxx notation and GitHub will automatically render the title of each PR in Preview mode and when the edit is saved.
  4. Verify that CI passes for the PR as a whole and for the most-recent/bottom-most commit in the PR. We're currently having problems where python-ci does not run on release PRs, but if you see a green check next to the most-recent commit you should be fine.
  5. Approve the PR, merge it, and delete the branch.
  6. Jenkins will automatically deploy the most-recently-built indicator packages to the pipeline servers
  7. Another GitHub action will automatically
    1. Create a git tag
    2. Create another Pull Request to merge the changes back into the main branch
    3. (if delphi-utils was updated) Upload the new version of delphi-utils to PyPI
  8. Approve the sync PR, merge it, and delete the branch
  9. Done

You may need to be an admin to perform some of the steps above.

License

This repository is released under the MIT License.

covidcast-indicators's People

Contributors

krivard avatar nmdefries avatar chinandrew avatar sgsmob avatar korlaxxalrok avatar capnrefsmmat avatar qx-teo avatar dshemetov avatar vishakha1812 avatar benjaminysmith avatar rumackaaron avatar eujing avatar jsharpna avatar mariajahja avatar jingjtang avatar alexcoda avatar huisaddison avatar amartyabasu avatar zhuoran-cheng16 avatar davidkretch avatar jedgrabman avatar ananya-joshi avatar rafaelcatoia avatar sgratzl avatar nloliveira avatar roniros avatar alsaeed avatar ryantibs avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.