Giter VIP home page Giter VIP logo

cometts's Introduction

Comet Time Series (CometTS) Visualizer

Niamey Time Series Plot

PyPI DOI badge build license docker


Base Functionality

Comet Time Series (CometTS) is an open source tool coded in python including jupyter notebooks and command line utility that enables users to visualize or extract relevant statistics from almost any format time series of overhead imagery within a specific region of interest (ROI). To use CometTS, you must define your ROI, provide a CSV file documenting how your imagery is organized, and then run one of the CometTS analysis tools. This usually takes the following steps

  1. Outline and download your ROI with a service like geojson.io
  2. Organize your imagery and document it with the CometTS.CSV_It tool
  3. Analyze your data using:
  4. Plot the results using the plotting notebook

A full walkthrough of this functionality with example data is included in two notebooks: CSV_Creator and CometTS_Visualizer

File Formats:

Supported Raster Formats

Supported Vector Formats

Installation

Python 2.7 or 3.6 are the base requirements plus several packages. CometTS can be installed in multiple ways including conda, pip, docker, and cloning this repository.

Clone it

We recommend cloning to add all sample data and easier access to the jupyter notebooks that leverage our plotting functions.

git clone https://github.com/CosmiQ/CometTS.git

If you would like the full functionality of a python package we have several options.

pip

pip install CometTS

pip installs may fail on macs with python3 as GDAL is finicky. Use some of the alternative approaches below.

Docker

docker pull jss5102/cometts
docker run -it -v /nfs:/nfs --name cometts jss5102/cometts /bin/bash 

Conda

Create a conda environment!

git clone https://github.com/CosmiQ/CometTS.git
cd CometTS
conda env create -f environment.yml
source activate CometTS
pip install CometTS

Dependencies

All dependencies can be found in the docker file Dockerfile or environment.yml or requirements.txt.

Examples

Agadez, Niger

Agadez Time Series Plot Seasonal variation in brightness that likely indicates seasonal migrations and population fluctuations in central Niger, Africa.

Suruc Refugee Camp, Turkey

Suruc Time Series Plot Increase in brightness coinciding with the establishment of a refugee camp in southern Turkey, north of Syria.

Allepo, Syria

Allepo Time Series Plot Brightness declines (i.e., putative population decline) as a result of Syrian Civil War and military actions in Aleppo.

NDVI Visualization north of Houston, Texas

Allepo Time Series Plot A visualization of the Normalized Difference Vegetation Index (NDVI) in a field north of Houston using a time-series of Landsat imagery.

Landsat Multispectral Visualization

Landsat Time Series Plot A visualization of three Landsat bands in New Orleans, Louisiana. Note the effects of Katrina in 2005.

Contribute or debug?

Interested in proposing a change, fixing a bug, or asking for help? Check out the contributions guidance.

License

See LICENSE.

Traffic

PyPI

cometts's People

Contributors

jshermeyer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cometts's Issues

Add instructions for running tests

I suggest that brief instructions to install pytest and run it on CometTS/tests be added to either the README or CONTRIBUTING documents. It's not in requirements.txt so won't necessarily be in the development environment.

This will help contributors verify their changes don't break your codebase and help users determine what works if they install from a development branch.

  • Add testing instructions

(JOSS review thread)

Improve notebooks

The notebooks run smoothly, thank you for providing them. Here are some small changes that could make them much more user-friendly.

Each notebook should have a title and one sentence explaining what it does. Ideally some inline Markdown cells should tell the user what to change and what's going on.

Instead of a single script pasted in the first cell, I suggest you separate the cells logically so the user can step through the analysis. This might be: one cell for imports, one cell for user-defined variables not specified in a widget, one cell per widget definition, and a final "run" cell. Or, if you don't want to use cells, please add header comments as you did in CSV_Creator.ipynb.

See examples of clean notebooks and example scripts here and here.

Finally, please populate the widget fields in CometTS_Visualizer.ipynb with relative paths to your San Juan example. This will allow the user to immediately see what CometTS can do.

  • Add headers and explanatory text to notebooks
  • Separate cells or add header comments for clarity
  • Populate default example in CometTS_Visualizer.ipynb

(JOSS review thread)

Edit paper for style and clarity

The paper has been improved, but I feel like some detail is missing. The main issues I see are:

  • The core contribution could be better defined in the second paragraph.

Right now, the paper states that CometTS provides new functionality in moving window statistics, extracting a time series from an ROI, and cloud masking. SITS, for one, has ARIMA functionality, and TIMESAT and SITS provide cloud/QA filtering, so I don't think these are the new, key features of CometTS. You should probably emphasize other unique advantages of CometTS as a rapid inspection workflow while mentioning these as important features.

  • There is some redundant use of the first person. For instance, you could edit the first sentence to remove "We have developed .. that we called" to more directly describe the software. This would be something like: "Comet Time Series (CometTS) is a set of Python notebooks that enables analysis and visualization of a time series of satellite imagery for the data science and geographic communities."

  • I think "geography community" is a better term for the set of researchers in this field.

  • Typo in the last paragraph of the paper ("calucluated" -> "calculated").

(JOSS review thread)

Other Issues From Review

  • Version: Does the release version given match the GitHub release (v1.0)?
  • Documentation - A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is? Add audience to statement of need (https://joss.readthedocs.io/en/latest/review_criteria.html#a-statement-of-need)
  • Paper - A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is? Add audience to statement of need (https://joss.readthedocs.io/en/latest/review_criteria.html#a-statement-of-need)
  • I think it would be better to intro something like ‘user defined polygon identifying a region of interest (ROI)’ and use ROI for the remainder of the paper.
  • Figures: please provide descriptive captions to the three figures.
  • I feel like the paper title could be smooth like this: 'Comet Time Series Visualizer: CometTS'
  • that we call -> called
  • (CometTS) -> ([CometTS])
  • a times series of satellite imagery -> time series satellite imagery.
  • -> The tool aims to enable research into population estimation, land use detection, or natural disaster monitoring using a variety of data types.
  • series of satellite imagery -> series of satellite images
  • variation), -> variation)
  • visualizes -> provides a visualization of
  • from user drawn polygons. -> from a user defined region of interest.
  • define GIS as geographic information systems
  • can only be used to analyze individual -> are limited to analysis of individual
  • CometTS then produces -> CometTS produces
  • within the polygon -> region of interest
  • of most relevance -> most relevant
  • standard statistics -> standard statistical measures / standard test statistics
  • Many of the details in the final paragraph could be summarized in a shorter sentence like “CometTS output includes user-specified statistics such as mean, median, and quartiles, and the package offers masking functionality to remove clouds and snow from the area of interest.” Then the remaining space could outline key research use cases in more detail.
  • Expand introduction, including appropriate citations to related work
  • Edit manuscript to remove workflow details in favor of suggested research use cases
  • Remove ® symbol from “Python ®”
  • Version: The Zenodo archive and paper should correspond to a tagged release on Github (#6)
  • Acknowledge in the documentation whether CometTS is
    a. a workflow for processing/visualizing raster time series, or
    b. tools for workflows; i.e. it's unclear how many of the functions are reliant on outputs from other pieces.
  • Acknowledge the key features that distinguish CometTS from other processing/visualization tools for raster time series, e.g. TIMESAT.
  • Test and indicate in the README which imagery sources and formats are compatible with CometTS.

Correct paths to example data

When running the ARIMA_Plotting notebook, the user will have to edit the input_CSV variable to point to the relative path to your San Juan example. Otherwise the notebook will fail with an error.

I suggest that this should be specified as a relative path (CometTS/VIIRS_Sample/San_Juan_ARIMA_Output.csv), or alternatively include step-by-step instructions in each example notebook.

  • Change any absolute paths to relative paths in example notebooks

(JOSS review thread)

Condense example in README and link to separate documentation

Your README is a first entry point to the project, and should summarize what it does, how to contribute and get help, and where to find more details. Currently I feel that the detailed workflow makes it difficult to get a overall picture of the package.

  • Migrate README walkthrough to notebooks, or condense example
  • Provide easily-digestible workflow steps

Any examples in the README should be pretty short; it's better to give more detail in separate documentation that you link to. See the verde package's README and documentation for a good example (published in JOSS!).

I suggest that you move most of the Workflow example section to a separate notebook or notebooks, and provide only a short walkthrough of the key steps. Something like this, with the links pointing to the more detailed documentation:

CometTS workflow

To use CometTS, you must define your area of interest, provide a CSV file documenting how your imagery is organized, and then run one of the CometTS analysis tools. This usually takes the following steps

  1. Outline and download your AOI with a service like geojson.io
  2. Organize your imagery and document it with the CometTS.CSV_It tool
  3. Analyze your data using:
  4. Plot the results using one of the plotting notebooks

(JOSS review thread)

Remove or clarify commented-out code

It's nice to see the tests pass, but there are a few instances of commented-out code in your tests and the example notebooks. You should remove these if they aren't necessary, or clarify if they can be run in certain cases (like you do in ARIMA.py and elsewhere).

  • Remove old code and print statements in ARIMA.py: L45-46, L120, L155-160, L204-205, 210, 235, 237
  • Remove old code from CometTS.py. There are many in the plot functions like L139, L291-296, L357 and 375, L476-481, as well as old testing calls like the NDVI plot at L847.
  • Remove old code from tests. It looks like you rewrote the code to use pd.testing instead of standard assertions, but many commented-out assertions remain (e.g. line 62-65 and 67 of Comet_test.py). There's also a block-commented code snippet at the end of file that should be deleted.

This will make the examples more accessible and make it easier to extend or contribute to CometTS without wading through scratch code.

(You also might consider removing the statement "No plotting testing included, do your own damn plotting if you have a problem." I get that it's unrealistic to test all possible uses of bokeh and matplotlib in the CometTS workflow, but this could be a little off-putting to someone who might want to contribute.)

(JOSS review thread)

Add doc strings for major functions; reformat function names per PEP 8

Every significant function should include a simple docstring to describe what it does, its arguments, and any outputs.

Related to this, I suggest renaming your functions according to conventional Python style. For example, Do_Zonal_Stats would become do_zonal_stats. Using more descriptive names, like calculate_zonal_stats, would be even better. This should be easy to do across the package and notebooks by find and replace or sed.

As noted in @zhampel's review, it would be good to run a format checker like flake8 on your codebase which would catch issues like this. It looks like you did this in your response, but there are still some small whitespace issues.

  • Add docstrings/function headers
  • Reformat function names consistently

(JOSS review thread)

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.