├── tests ├── cli │ ├── __init__.py │ ├── test_map_predict.py │ ├── test_cache.py │ └── conftest.py ├── data │ ├── results │ │ ├── .swp │ │ ├── YATSM │ │ │ ├── yatsm_r0.npz │ │ │ ├── yatsm_r1.npz │ │ │ ├── yatsm_r2.npz │ │ │ ├── yatsm_r3.npz │ │ │ └── yatsm_r4.npz │ │ ├── example_image.gtif │ │ ├── YATSM_classified │ │ │ ├── yatsm_r0.npz │ │ │ ├── yatsm_r1.npz │ │ │ ├── yatsm_r2.npz │ │ │ ├── yatsm_r3.npz │ │ │ └── yatsm_r4.npz │ │ ├── cache │ │ │ ├── yatsm_r0_n447_b8.npy.npz │ │ │ ├── yatsm_r1_n447_b8.npy.npz │ │ │ ├── yatsm_r2_n447_b8.npy.npz │ │ │ ├── yatsm_r3_n447_b8.npy.npz │ │ │ └── yatsm_r4_n447_b8.npy.npz │ │ ├── training_image_1995-06-01.gtif │ │ ├── add_arbitrary_training_data.py │ │ ├── RandomForest.yaml │ │ ├── p035r032_results.yaml │ │ └── add_arbitrary_classification.py │ ├── p013r030_r50_n423_b8.npz │ ├── p035r032_testdata.tar.gz │ ├── cache │ │ └── yatsm_r0_n447_b8.npy.npz │ └── README.md ├── algorithms │ └── data │ │ ├── example_data.npz │ │ ├── example_timeseries.npz │ │ ├── p013r030_r50_n423_b8.npz │ │ └── example_timeseries_masked.npz ├── regression │ ├── test_regression_diagnostics.py │ ├── test_regression_transforms.py │ ├── conftest.py │ ├── test_regression_packaged.py │ └── test_regression_robust_fit.py ├── io │ └── test_helpers.py ├── phenology │ ├── conftest.py │ └── test_phenology_longtermmean.py ├── test_utils.py ├── test_cyprep.py ├── test_masking.py └── classifiers │ └── test_classifiers.py ├── yatsm ├── cli │ ├── monitor.py │ ├── __init__.py │ └── console.py ├── version.py ├── phenology │ └── __init__.py ├── __init__.py ├── regression │ ├── pickles │ │ └── __init__.py │ ├── __init__.py │ ├── diagnostics.py │ └── transforms.py ├── errors.py ├── log_yatsm.py ├── mapping │ └── __init__.py ├── vegetation_indices.py ├── io │ └── __init__.py ├── algorithms │ └── __init__.py └── _cyprep.pyx ├── bench ├── .gitignore ├── benchmarks │ ├── algorithms │ │ └── __init__.py │ ├── bench_utils │ │ ├── __init__.py │ │ └── example_timeseries.py │ ├── regression │ │ ├── __init__.py │ │ ├── robust_fit.py │ │ └── recresid.py │ └── __init__.py ├── README.md └── results │ └── etm │ ├── machine.json │ ├── 0c2425cf-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 31e21f90-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 42beb397-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 9f4e3773-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── bb868922-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── d9b4b80c-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── ec0d06ec-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── ec161c4e-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── f315eca3-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── dd4b2022-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 01a6adec-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 2fba333b-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 54e468da-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 9ab2ead1-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── ee8d7543-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 024b16b0-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 065394fb-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 0b4a3743-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 3733d5b3-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 39c6c93d-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 41b12d47-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 4b2cce62-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 772badc9-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 898619d6-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 906d4ec4-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 9613b064-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── b2e92c23-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── b56b8a18-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── e4cc5ca7-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── fc1be255-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 0e4e9f30-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 139f00ef-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 20386873-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 2c2c7645-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 4ac359fd-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 61372747-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 6bf00ff3-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 7dee4aad-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── a32ef840-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── b663ef22-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── df582d23-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 0d3e60fd-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 1b8f0049-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 1fc48481-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 226b06a2-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 22cf509e-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 29ddd4c0-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 30040764-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 53397e0e-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 83952fa5-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 8b6db33d-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 966edd8b-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 9d49d737-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── bfea85d6-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── c89b41a4-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── d390c5f2-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── e944dc96-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ ├── 5f8a667d-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json │ └── 7b929123-py2.7-Cython0.20-click4.0-gdal1.11-matplotlib1.4.3-numba0.22-numpy1.9-pandas0.16.0-patsy0.3.0-pyyaml3.11-scikit-learn0.15-scipy0.14.0-statsmodels0.5.0.json ├── .deploy_key.enc ├── requirements ├── pheno.txt ├── all.txt ├── optional.txt ├── dev.txt ├── accel.txt └── common.txt ├── docs ├── yatsm │ ├── modules.rst │ ├── yatsm.accel.rst │ ├── yatsm.cache.rst │ ├── yatsm.plots.rst │ ├── yatsm.utils.rst │ ├── yatsm.errors.rst │ ├── yatsm.cli.map.rst │ ├── yatsm.masking.rst │ ├── yatsm.version.rst │ ├── yatsm.cli.line.rst │ ├── yatsm.cli.main.rst │ ├── yatsm.cli.cache.rst │ ├── yatsm.cli.pixel.rst │ ├── yatsm.cli.train.rst │ ├── yatsm.io.helpers.rst │ ├── yatsm.io.readers.rst │ ├── yatsm.log_yatsm.rst │ ├── yatsm.cli.console.rst │ ├── yatsm.cli.options.rst │ ├── yatsm.cli.classify.rst │ ├── yatsm.cli.changemap.rst │ ├── yatsm.config_parser.rst │ ├── yatsm.mapping.utils.rst │ ├── yatsm.algorithms.ccdc.rst │ ├── yatsm.mapping.changes.rst │ ├── yatsm.algorithms.yatsm.rst │ ├── yatsm.mapping.phenology.rst │ ├── yatsm.regression.design.rst │ ├── yatsm.mapping.prediction.rst │ ├── yatsm.vegetation_indices.rst │ ├── yatsm.regression.packaged.rst │ ├── yatsm.regression.recresid.rst │ ├── yatsm.io.stack_line_readers.rst │ ├── yatsm.regression.robust_fit.rst │ ├── yatsm.regression.transforms.rst │ ├── yatsm.algorithms.postprocess.rst │ ├── yatsm.mapping.classification.rst │ ├── yatsm.phenology.longtermmean.rst │ ├── yatsm.regression.diagnostics.rst │ ├── yatsm.classifiers.diagnostics.rst │ ├── yatsm.regression.pickles.serialize.rst │ ├── yatsm.phenology.rst │ ├── yatsm.classifiers.rst │ ├── yatsm.io.rst │ ├── yatsm.regression.pickles.rst │ ├── yatsm.algorithms.rst │ ├── yatsm.mapping.rst │ ├── yatsm.cli.rst │ ├── yatsm.regression.rst │ └── yatsm.rst ├── media │ ├── example_ts_b5.png │ ├── double_cut_ts_b3.png │ ├── double_cut_ts_b5.png │ ├── example_ts_fitted_b5.png │ ├── double_cut_ts_fitted_b3.png │ ├── double_cut_ts_fitted_b5.png │ └── landsat_stack_example_b5.png ├── cli │ ├── yatsm.rst │ ├── yatsm_line.rst │ ├── yatsm_classify.rst │ ├── gen_date_file.rst │ ├── yatsm_pixel.rst │ ├── modules.rst │ ├── yatsm_changemap.rst │ ├── yatsm_train.rst │ ├── yatsm_map.rst │ ├── usage │ │ ├── yatsm_classify.txt │ │ ├── yatsm_line.txt │ │ ├── yatsm_cache.txt │ │ ├── yatsm_pixel.txt │ │ ├── yatsm_train.txt │ │ ├── gen_date_file.txt │ │ ├── yatsm_changemap.txt │ │ └── yatsm.txt │ ├── yatsm_cache.rst │ └── scripts.rst ├── requirements.txt ├── guide │ ├── classification.rst │ ├── exploration.rst │ ├── model_specification.rst │ ├── models │ │ ├── ccdcesque.rst │ │ ├── models.rst │ │ └── ccdcesque.dot │ ├── dataset.rst │ ├── map_changes.rst │ └── phenology.rst ├── build_docs.sh └── index.rst ├── examples ├── training_data.gtif ├── envvar │ └── README.md ├── training_data.gtif.aux.xml └── classifiers │ └── RandomForest.yaml ├── requirements.txt ├── .gitignore ├── environment.yaml └── LICENSE.txt /tests/cli/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /yatsm/cli/monitor.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bench/.gitignore: -------------------------------------------------------------------------------- 1 | yatsm 2 | html 3 | -------------------------------------------------------------------------------- /bench/benchmarks/algorithms/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bench/benchmarks/bench_utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bench/benchmarks/regression/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /yatsm/version.py: -------------------------------------------------------------------------------- 1 | __version__ = '0.7.0' 2 | -------------------------------------------------------------------------------- /.deploy_key.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/.deploy_key.enc -------------------------------------------------------------------------------- /requirements/pheno.txt: -------------------------------------------------------------------------------- 1 | # Phenology calculation requirements 2 | rpy2>=2.5.6 3 | -------------------------------------------------------------------------------- /yatsm/cli/__init__.py: -------------------------------------------------------------------------------- 1 | """ YATSM command line interface based on click 2 | """ 3 | -------------------------------------------------------------------------------- /yatsm/phenology/__init__.py: -------------------------------------------------------------------------------- 1 | """ Module for phenology related algorithms 2 | """ 3 | -------------------------------------------------------------------------------- /tests/data/results/.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/.swp -------------------------------------------------------------------------------- /docs/yatsm/modules.rst: -------------------------------------------------------------------------------- 1 | yatsm 2 | ===== 3 | 4 | .. toctree:: 5 | :maxdepth: 4 6 | 7 | yatsm 8 | -------------------------------------------------------------------------------- /docs/media/example_ts_b5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/docs/media/example_ts_b5.png -------------------------------------------------------------------------------- /examples/training_data.gtif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/examples/training_data.gtif -------------------------------------------------------------------------------- /docs/media/double_cut_ts_b3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/docs/media/double_cut_ts_b3.png -------------------------------------------------------------------------------- /docs/media/double_cut_ts_b5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/docs/media/double_cut_ts_b5.png -------------------------------------------------------------------------------- /requirements/all.txt: -------------------------------------------------------------------------------- 1 | # Requirements for running all of YATSM modules 2 | -r common.txt 3 | -r optional.txt 4 | -------------------------------------------------------------------------------- /docs/media/example_ts_fitted_b5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/docs/media/example_ts_fitted_b5.png -------------------------------------------------------------------------------- /tests/data/p013r030_r50_n423_b8.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/p013r030_r50_n423_b8.npz -------------------------------------------------------------------------------- /tests/data/p035r032_testdata.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/p035r032_testdata.tar.gz -------------------------------------------------------------------------------- /docs/media/double_cut_ts_fitted_b3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/docs/media/double_cut_ts_fitted_b3.png -------------------------------------------------------------------------------- /docs/media/double_cut_ts_fitted_b5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/docs/media/double_cut_ts_fitted_b5.png -------------------------------------------------------------------------------- /docs/media/landsat_stack_example_b5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/docs/media/landsat_stack_example_b5.png -------------------------------------------------------------------------------- /tests/algorithms/data/example_data.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/algorithms/data/example_data.npz -------------------------------------------------------------------------------- /tests/data/results/YATSM/yatsm_r0.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/YATSM/yatsm_r0.npz -------------------------------------------------------------------------------- /tests/data/results/YATSM/yatsm_r1.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/YATSM/yatsm_r1.npz -------------------------------------------------------------------------------- /tests/data/results/YATSM/yatsm_r2.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/YATSM/yatsm_r2.npz -------------------------------------------------------------------------------- /tests/data/results/YATSM/yatsm_r3.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/YATSM/yatsm_r3.npz -------------------------------------------------------------------------------- /tests/data/results/YATSM/yatsm_r4.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/YATSM/yatsm_r4.npz -------------------------------------------------------------------------------- /tests/data/results/example_image.gtif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/example_image.gtif -------------------------------------------------------------------------------- /tests/data/cache/yatsm_r0_n447_b8.npy.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/cache/yatsm_r0_n447_b8.npy.npz -------------------------------------------------------------------------------- /tests/algorithms/data/example_timeseries.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/algorithms/data/example_timeseries.npz -------------------------------------------------------------------------------- /tests/algorithms/data/p013r030_r50_n423_b8.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/algorithms/data/p013r030_r50_n423_b8.npz -------------------------------------------------------------------------------- /tests/data/results/YATSM_classified/yatsm_r0.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/YATSM_classified/yatsm_r0.npz -------------------------------------------------------------------------------- /tests/data/results/YATSM_classified/yatsm_r1.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/YATSM_classified/yatsm_r1.npz -------------------------------------------------------------------------------- /tests/data/results/YATSM_classified/yatsm_r2.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/YATSM_classified/yatsm_r2.npz -------------------------------------------------------------------------------- /tests/data/results/YATSM_classified/yatsm_r3.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/YATSM_classified/yatsm_r3.npz -------------------------------------------------------------------------------- /tests/data/results/YATSM_classified/yatsm_r4.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/YATSM_classified/yatsm_r4.npz -------------------------------------------------------------------------------- /tests/data/results/cache/yatsm_r0_n447_b8.npy.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/cache/yatsm_r0_n447_b8.npy.npz -------------------------------------------------------------------------------- /tests/data/results/cache/yatsm_r1_n447_b8.npy.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/cache/yatsm_r1_n447_b8.npy.npz -------------------------------------------------------------------------------- /tests/data/results/cache/yatsm_r2_n447_b8.npy.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/cache/yatsm_r2_n447_b8.npy.npz -------------------------------------------------------------------------------- /tests/data/results/cache/yatsm_r3_n447_b8.npy.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/cache/yatsm_r3_n447_b8.npy.npz -------------------------------------------------------------------------------- /tests/data/results/cache/yatsm_r4_n447_b8.npy.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/cache/yatsm_r4_n447_b8.npy.npz -------------------------------------------------------------------------------- /tests/data/results/training_image_1995-06-01.gtif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/data/results/training_image_1995-06-01.gtif -------------------------------------------------------------------------------- /tests/algorithms/data/example_timeseries_masked.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ceholden/yatsm/HEAD/tests/algorithms/data/example_timeseries_masked.npz -------------------------------------------------------------------------------- /bench/README.md: -------------------------------------------------------------------------------- 1 | # Benchmarks 2 | 3 | Performance benchmarks and benchmark tracking using [Airpspeed Velocity](https://github.com/spacetelescope/asv). 4 | -------------------------------------------------------------------------------- /requirements/optional.txt: -------------------------------------------------------------------------------- 1 | # Phenology calculation requirements 2 | -r pheno.txt 3 | # Accelerating computation via Numba and GLMNET Fortran wrapper 4 | -r accel.txt 5 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.accel.rst: -------------------------------------------------------------------------------- 1 | yatsm.accel module 2 | ================== 3 | 4 | .. automodule:: yatsm.accel 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cache.rst: -------------------------------------------------------------------------------- 1 | yatsm.cache module 2 | ================== 3 | 4 | .. automodule:: yatsm.cache 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.plots.rst: -------------------------------------------------------------------------------- 1 | yatsm.plots module 2 | ================== 3 | 4 | .. automodule:: yatsm.plots 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.utils.rst: -------------------------------------------------------------------------------- 1 | yatsm.utils module 2 | ================== 3 | 4 | .. automodule:: yatsm.utils 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.errors.rst: -------------------------------------------------------------------------------- 1 | yatsm.errors module 2 | =================== 3 | 4 | .. automodule:: yatsm.errors 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cli.map.rst: -------------------------------------------------------------------------------- 1 | yatsm.cli.map module 2 | ==================== 3 | 4 | .. automodule:: yatsm.cli.map 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.masking.rst: -------------------------------------------------------------------------------- 1 | yatsm.masking module 2 | ==================== 3 | 4 | .. automodule:: yatsm.masking 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.version.rst: -------------------------------------------------------------------------------- 1 | yatsm.version module 2 | ==================== 3 | 4 | .. automodule:: yatsm.version 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cli.line.rst: -------------------------------------------------------------------------------- 1 | yatsm.cli.line module 2 | ===================== 3 | 4 | .. automodule:: yatsm.cli.line 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cli.main.rst: -------------------------------------------------------------------------------- 1 | yatsm.cli.main module 2 | ===================== 3 | 4 | .. automodule:: yatsm.cli.main 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cli.cache.rst: -------------------------------------------------------------------------------- 1 | yatsm.cli.cache module 2 | ====================== 3 | 4 | .. automodule:: yatsm.cli.cache 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cli.pixel.rst: -------------------------------------------------------------------------------- 1 | yatsm.cli.pixel module 2 | ====================== 3 | 4 | .. automodule:: yatsm.cli.pixel 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cli.train.rst: -------------------------------------------------------------------------------- 1 | yatsm.cli.train module 2 | ====================== 3 | 4 | .. automodule:: yatsm.cli.train 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.io.helpers.rst: -------------------------------------------------------------------------------- 1 | yatsm.io.helpers module 2 | ======================= 3 | 4 | .. automodule:: yatsm.io.helpers 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.io.readers.rst: -------------------------------------------------------------------------------- 1 | yatsm.io.readers module 2 | ======================= 3 | 4 | .. automodule:: yatsm.io.readers 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.log_yatsm.rst: -------------------------------------------------------------------------------- 1 | yatsm.log_yatsm module 2 | ====================== 3 | 4 | .. automodule:: yatsm.log_yatsm 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/cli/yatsm.rst: -------------------------------------------------------------------------------- 1 | .. _yatsm_cli: 2 | 3 | `yatsm` 4 | ------- 5 | 6 | YATSM Command Line Interface and Subcommands: 7 | 8 | .. literalinclude:: usage/yatsm.txt 9 | :language: bash 10 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cli.console.rst: -------------------------------------------------------------------------------- 1 | yatsm.cli.console module 2 | ======================== 3 | 4 | .. automodule:: yatsm.cli.console 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cli.options.rst: -------------------------------------------------------------------------------- 1 | yatsm.cli.options module 2 | ======================== 3 | 4 | .. automodule:: yatsm.cli.options 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cli.classify.rst: -------------------------------------------------------------------------------- 1 | yatsm.cli.classify module 2 | ========================= 3 | 4 | .. automodule:: yatsm.cli.classify 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cli.changemap.rst: -------------------------------------------------------------------------------- 1 | yatsm.cli.changemap module 2 | ========================== 3 | 4 | .. automodule:: yatsm.cli.changemap 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.config_parser.rst: -------------------------------------------------------------------------------- 1 | yatsm.config_parser module 2 | ========================== 3 | 4 | .. automodule:: yatsm.config_parser 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.mapping.utils.rst: -------------------------------------------------------------------------------- 1 | yatsm.mapping.utils module 2 | ========================== 3 | 4 | .. automodule:: yatsm.mapping.utils 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | click>=4.0 2 | click_plugins>=1.0 3 | mock>=1.0.1 4 | sphinxcontrib-bibtex>=0.3.1 5 | sphinxcontrib-napoleon>=0.2.8 6 | sphinx_rtd_theme>=0.1.6 7 | Sphinx>=1.2.3 8 | sphinx-paramlinks>=0.3.1 9 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.algorithms.ccdc.rst: -------------------------------------------------------------------------------- 1 | yatsm.algorithms.ccdc module 2 | ============================ 3 | 4 | .. automodule:: yatsm.algorithms.ccdc 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.mapping.changes.rst: -------------------------------------------------------------------------------- 1 | yatsm.mapping.changes module 2 | ============================ 3 | 4 | .. automodule:: yatsm.mapping.changes 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /bench/benchmarks/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | # Fix OPENLBAS threads to 1 4 | NP_THREAD_VARS = ['OPENBLAS_NUM_THREADS', 'MKL_NUM_THREADS', 'OPM_NUM_THREADS'] 5 | for ev in NP_THREAD_VARS: 6 | os.environ[ev] = '1' 7 | -------------------------------------------------------------------------------- /docs/cli/yatsm_line.rst: -------------------------------------------------------------------------------- 1 | .. _yatsm_line: 2 | 3 | `yatsm line` 4 | --------------- 5 | 6 | Run YATSM in batch mode for entire lines: 7 | 8 | .. literalinclude:: usage/yatsm_line.txt 9 | :language: bash 10 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.algorithms.yatsm.rst: -------------------------------------------------------------------------------- 1 | yatsm.algorithms.yatsm module 2 | ============================= 3 | 4 | .. automodule:: yatsm.algorithms.yatsm 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/cli/yatsm_classify.rst: -------------------------------------------------------------------------------- 1 | .. _yatsm_classify: 2 | 3 | `yatsm classify` 4 | ------------------- 5 | 6 | Classify all lines within an image using a trained classifier: 7 | 8 | .. literalinclude:: usage/yatsm_classify.txt 9 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.mapping.phenology.rst: -------------------------------------------------------------------------------- 1 | yatsm.mapping.phenology module 2 | ============================== 3 | 4 | .. automodule:: yatsm.mapping.phenology 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.regression.design.rst: -------------------------------------------------------------------------------- 1 | yatsm.regression.design module 2 | ============================== 3 | 4 | .. automodule:: yatsm.regression.design 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /yatsm/__init__.py: -------------------------------------------------------------------------------- 1 | from .version import __version__ 2 | from . import log_yatsm 3 | 4 | __all__ = [ 5 | 'algorithms', 6 | 'classifiers', 7 | 'mapping', 8 | 'regression', 9 | 'phenology' 10 | ] 11 | -------------------------------------------------------------------------------- /docs/cli/gen_date_file.rst: -------------------------------------------------------------------------------- 1 | .. _gen_date_file: 2 | 3 | `gen_date_file.sh` 4 | ------------------ 5 | 6 | Generate Date and Filename Lists: 7 | 8 | .. literalinclude:: usage/gen_date_file.txt 9 | :language: bash 10 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.mapping.prediction.rst: -------------------------------------------------------------------------------- 1 | yatsm.mapping.prediction module 2 | =============================== 3 | 4 | .. automodule:: yatsm.mapping.prediction 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.vegetation_indices.rst: -------------------------------------------------------------------------------- 1 | yatsm.vegetation_indices module 2 | =============================== 3 | 4 | .. automodule:: yatsm.vegetation_indices 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /requirements/dev.txt: -------------------------------------------------------------------------------- 1 | pytest==3.0.1 2 | Sphinx>=1.2.3 3 | mock>=1.0.1 4 | sphinx_rtd_theme>=0.1.6 5 | sphinxcontrib-napoleon>=0.2.8 6 | sphinxcontrib-bibtex>=0.3.1 7 | coverage>=3.7.1 8 | git+git://github.com/spacetelescope/asv 9 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.regression.packaged.rst: -------------------------------------------------------------------------------- 1 | yatsm.regression.packaged module 2 | ================================ 3 | 4 | .. automodule:: yatsm.regression.packaged 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.regression.recresid.rst: -------------------------------------------------------------------------------- 1 | yatsm.regression.recresid module 2 | ================================ 3 | 4 | .. automodule:: yatsm.regression.recresid 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/cli/yatsm_pixel.rst: -------------------------------------------------------------------------------- 1 | .. _yatsm_pixel: 2 | 3 | `yatsm pixel` 4 | -------------- 5 | 6 | Run YATSM for individual pixels with specified parameters: 7 | 8 | .. literalinclude:: usage/yatsm_pixel.txt 9 | :language: bash 10 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.io.stack_line_readers.rst: -------------------------------------------------------------------------------- 1 | yatsm.io.stack_line_readers module 2 | ================================== 3 | 4 | .. automodule:: yatsm.io.stack_line_readers 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.regression.robust_fit.rst: -------------------------------------------------------------------------------- 1 | yatsm.regression.robust_fit module 2 | ================================== 3 | 4 | .. automodule:: yatsm.regression.robust_fit 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.regression.transforms.rst: -------------------------------------------------------------------------------- 1 | yatsm.regression.transforms module 2 | ================================== 3 | 4 | .. automodule:: yatsm.regression.transforms 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /bench/results/etm/machine.json: -------------------------------------------------------------------------------- 1 | { 2 | "arch": "x86_64", 3 | "cpu": "Intel(R) Core(TM) i5 CPU 760 @ 2.80GHz", 4 | "machine": "etm", 5 | "os": "Linux 4.2.5-1-ARCH", 6 | "ram": "12267468", 7 | "version": 1 8 | } -------------------------------------------------------------------------------- /docs/cli/modules.rst: -------------------------------------------------------------------------------- 1 | scripts 2 | ======= 3 | 4 | .. toctree:: 5 | :maxdepth: 4 6 | 7 | yatsm_pixel 8 | yatsm_line 9 | yatsm_train 10 | yatsm_classify 11 | yatsm_changemap 12 | yatsm_map 13 | gen_date_file 14 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.algorithms.postprocess.rst: -------------------------------------------------------------------------------- 1 | yatsm.algorithms.postprocess module 2 | =================================== 3 | 4 | .. automodule:: yatsm.algorithms.postprocess 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.mapping.classification.rst: -------------------------------------------------------------------------------- 1 | yatsm.mapping.classification module 2 | =================================== 3 | 4 | .. automodule:: yatsm.mapping.classification 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.phenology.longtermmean.rst: -------------------------------------------------------------------------------- 1 | yatsm.phenology.longtermmean module 2 | =================================== 3 | 4 | .. automodule:: yatsm.phenology.longtermmean 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.regression.diagnostics.rst: -------------------------------------------------------------------------------- 1 | yatsm.regression.diagnostics module 2 | =================================== 3 | 4 | .. automodule:: yatsm.regression.diagnostics 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/guide/classification.rst: -------------------------------------------------------------------------------- 1 | .. _guide_classification: 2 | 3 | ============== 4 | Classification 5 | ============== 6 | 7 | The issue tracker on Github is being used to track additions to this 8 | documentation section. Please see :issue:`38`. 9 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.classifiers.diagnostics.rst: -------------------------------------------------------------------------------- 1 | yatsm.classifiers.diagnostics module 2 | ==================================== 3 | 4 | .. automodule:: yatsm.classifiers.diagnostics 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/cli/yatsm_changemap.rst: -------------------------------------------------------------------------------- 1 | .. _yatsm_changemap: 2 | 3 | 4 | `yatsm changemap` 5 | -------------------- 6 | 7 | Create maps of change information from YATSM output: 8 | 9 | .. literalinclude:: usage/yatsm_changemap.txt 10 | :language: bash 11 | -------------------------------------------------------------------------------- /docs/cli/yatsm_train.rst: -------------------------------------------------------------------------------- 1 | .. _yatsm_train: 2 | 3 | `yatsm train` 4 | ---------------- 5 | 6 | Train classifier predicting land cover for each time segment within YATSM 7 | output: 8 | 9 | .. literalinclude:: usage/yatsm_train.txt 10 | :language: bash 11 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.regression.pickles.serialize.rst: -------------------------------------------------------------------------------- 1 | yatsm.regression.pickles.serialize module 2 | ========================================= 3 | 4 | .. automodule:: yatsm.regression.pickles.serialize 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/cli/yatsm_map.rst: -------------------------------------------------------------------------------- 1 | .. _yatsm_map: 2 | 3 | `yatsm map` 4 | ----------- 5 | 6 | Create maps of coefficients, predicted images, or land cover for any given date 7 | from YATSM output: 8 | 9 | .. literalinclude:: usage/yatsm_map.txt 10 | :language: bash 11 | -------------------------------------------------------------------------------- /yatsm/regression/pickles/__init__.py: -------------------------------------------------------------------------------- 1 | """ Setup pickles for distribution -- NOT A MODULE INCLUDED IN YATSM 2 | 3 | Note that pickles are generated at time of installation. Upgrading or altering 4 | the libraries that the pickles are dependent upon may cause errors. 5 | """ 6 | -------------------------------------------------------------------------------- /docs/guide/exploration.rst: -------------------------------------------------------------------------------- 1 | .. _guide_exploration: 2 | 3 | =========================== 4 | Model Parameter Exploration 5 | =========================== 6 | 7 | The issue tracker on Github is being used to track additions to this 8 | documentation section. Please see :issue:`35`. 9 | -------------------------------------------------------------------------------- /requirements/accel.txt: -------------------------------------------------------------------------------- 1 | # Accelerating computation via Numba 2 | numba>=0.22 3 | # Faster Enet/Lasso with GLMNET fortran wrapper 4 | git+git://github.com/ceholden/glmnet-python.git@v2.0.1 5 | # Faster file navigation with `scandir` (also available in Python 3.5) 6 | scandir>=1.1 7 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # By default just install the minimum requirements from "common" 2 | # Install requirements with pip as: 3 | # pip install -r requirements.txt 4 | # Install requirements with conda as: 5 | # conda create -n --file requirements.txt 6 | -r requirements/core.txt 7 | -------------------------------------------------------------------------------- /docs/cli/usage/yatsm_classify.txt: -------------------------------------------------------------------------------- 1 | $ yatsm classify --help 2 | Usage: yatsm classify [OPTIONS] 3 | 4 | 5 | Options: 6 | --resume Resume classification (don't overwrite) 7 | --help Show this message and exit. 8 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.phenology.rst: -------------------------------------------------------------------------------- 1 | yatsm.phenology package 2 | ======================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | yatsm.phenology.longtermmean 10 | 11 | Module contents 12 | --------------- 13 | 14 | .. automodule:: yatsm.phenology 15 | :members: 16 | :undoc-members: 17 | :show-inheritance: 18 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.classifiers.rst: -------------------------------------------------------------------------------- 1 | yatsm.classifiers package 2 | ========================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | yatsm.classifiers.diagnostics 10 | 11 | Module contents 12 | --------------- 13 | 14 | .. automodule:: yatsm.classifiers 15 | :members: 16 | :undoc-members: 17 | :show-inheritance: 18 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.io.rst: -------------------------------------------------------------------------------- 1 | yatsm.io package 2 | ================ 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | yatsm.io.helpers 10 | yatsm.io.readers 11 | yatsm.io.stack_line_readers 12 | 13 | Module contents 14 | --------------- 15 | 16 | .. automodule:: yatsm.io 17 | :members: 18 | :undoc-members: 19 | :show-inheritance: 20 | -------------------------------------------------------------------------------- /docs/cli/usage/yatsm_line.txt: -------------------------------------------------------------------------------- 1 | $ yatsm line --help 2 | Usage: yatsm line [OPTIONS] 3 | 4 | Options: 5 | --check_cache Check that cache file contains matching data 6 | --resume Do not overwrite preexisting results 7 | --do-not-run Do not run YATSM (useful for just caching data) 8 | --help Show this message and exit. 9 | -------------------------------------------------------------------------------- /docs/build_docs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | rm yatsm/*.rst 6 | make clean 7 | 8 | cd ../ 9 | 10 | sphinx-apidoc -f -e -o docs/yatsm yatsm/ 11 | # sphinx-apidoc -f -e -o docs/scripts scripts/ 12 | 13 | cd docs/ 14 | 15 | make html 16 | 17 | # copy benchmarks 18 | cd $(dirname $0)/../bench/ 19 | asv publish 20 | cp -R html ../docs/_build/html/bench 21 | -------------------------------------------------------------------------------- /requirements/common.txt: -------------------------------------------------------------------------------- 1 | # Base 2 | numpy>=1.9.0 3 | scipy>=0.14.0 4 | Cython>=0.20.1 5 | setuptools>=0.7.2 # wicked old setuptools broken for .pyx -> .c 6 | # Statistics 7 | statsmodels>=0.5.0 8 | scikit-learn>=0.15.1 9 | pandas>=0.16.0 10 | patsy>=0.3.0 11 | # CLI 12 | click>=4.0 13 | click_plugins>=1.0 14 | # Plotting 15 | matplotlib>=1.4.2 16 | # Config file 17 | pyyaml>=3.11 18 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.regression.pickles.rst: -------------------------------------------------------------------------------- 1 | yatsm.regression.pickles package 2 | ================================ 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | yatsm.regression.pickles.serialize 10 | 11 | Module contents 12 | --------------- 13 | 14 | .. automodule:: yatsm.regression.pickles 15 | :members: 16 | :undoc-members: 17 | :show-inheritance: 18 | -------------------------------------------------------------------------------- /docs/cli/usage/yatsm_cache.txt: -------------------------------------------------------------------------------- 1 | $ yatsm cache --help 2 | Usage: yatsm cache [OPTIONS] 3 | 4 | Options: 5 | --update Create new cache files by updating old cache files 6 | matching provided pattern 7 | --interlace Assign rows interlaced by job instead of sequentially 8 | --help Show this message and exit. 9 | -------------------------------------------------------------------------------- /tests/regression/test_regression_diagnostics.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pytest 3 | 4 | from yatsm.regression.diagnostics import rmse 5 | 6 | n = 500 7 | 8 | 9 | @pytest.fixture 10 | def y(prng): 11 | y = prng.standard_normal(n) 12 | return y 13 | 14 | 15 | def test_rmse(y): 16 | yhat = y + 1.0 17 | _rmse = rmse(y, yhat) 18 | np.testing.assert_allclose(_rmse, 1.0) 19 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.algorithms.rst: -------------------------------------------------------------------------------- 1 | yatsm.algorithms package 2 | ======================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | yatsm.algorithms.ccdc 10 | yatsm.algorithms.postprocess 11 | yatsm.algorithms.yatsm 12 | 13 | Module contents 14 | --------------- 15 | 16 | .. automodule:: yatsm.algorithms 17 | :members: 18 | :undoc-members: 19 | :show-inheritance: 20 | -------------------------------------------------------------------------------- /docs/cli/yatsm_cache.rst: -------------------------------------------------------------------------------- 1 | .. _yatsm_cache: 2 | 3 | 4 | `yatsm cache` 5 | -------------------- 6 | 7 | Create or modify dataset cache files used by YATSM. This command can create cache files from scratch or update existing cache files to reflect additions or removals from the time series dataset originally cached to disk. 8 | 9 | Usage: 10 | 11 | .. literalinclude:: usage/yatsm_cache.txt 12 | :language: bash 13 | -------------------------------------------------------------------------------- /yatsm/regression/__init__.py: -------------------------------------------------------------------------------- 1 | from .design import design_coefs, design_to_indices 2 | from .packaged import find_packaged_regressor 3 | from .recresid import recresid 4 | from .robust_fit import RLM, bisquare 5 | from .transforms import harm 6 | 7 | __all__ = [ 8 | 'design_coefs', 9 | 'design_to_indices', 10 | 'find_packaged_regressor', 11 | 'recresid', 12 | 'RLM', 13 | 'bisquare', 14 | 'harm' 15 | ] 16 | -------------------------------------------------------------------------------- /yatsm/errors.py: -------------------------------------------------------------------------------- 1 | class TSLengthException(Exception): 2 | """ Exception stating timeseries does not contain enough observations 3 | """ 4 | pass 5 | 6 | 7 | class TrainingDataException(Exception): 8 | """ Custom exception for errors with training data """ 9 | pass 10 | 11 | 12 | class AlgorithmNotFoundException(Exception): 13 | """ Custom exception for algorithm config files without handlers """ 14 | pass 15 | -------------------------------------------------------------------------------- /docs/guide/model_specification.rst: -------------------------------------------------------------------------------- 1 | .. _guide_model_spec: 2 | 3 | ============================== 4 | Timeseries Model Specification 5 | ============================== 6 | 7 | This section will describe the timeseries models used in YATSM and how to 8 | configure them :ref:`within the configuration file `. 9 | 10 | The issue tracker on Github is being used to track additions to this 11 | documentation section. Please see :issue:`36`. 12 | -------------------------------------------------------------------------------- /docs/guide/models/ccdcesque.rst: -------------------------------------------------------------------------------- 1 | .. _guide_models_ccdcesque: 2 | 3 | CCDCesque 4 | ========= 5 | 6 | The YATSM implementation of Continuous Classification and Change Detection (CCDC) :cite:`Zhu2014152` 7 | 8 | 9 | .. autoclass:: yatsm.algorithms.ccdc.CCDCesque 10 | 11 | 12 | Algorithm Logic 13 | --------------- 14 | 15 | .. graphviz:: ccdcesque.dot 16 | 17 | 18 | .. bibliography:: ../../static/index_refs.bib 19 | :style: plain 20 | :cited: 21 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.mapping.rst: -------------------------------------------------------------------------------- 1 | yatsm.mapping package 2 | ===================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | yatsm.mapping.changes 10 | yatsm.mapping.classification 11 | yatsm.mapping.phenology 12 | yatsm.mapping.prediction 13 | yatsm.mapping.utils 14 | 15 | Module contents 16 | --------------- 17 | 18 | .. automodule:: yatsm.mapping 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | -------------------------------------------------------------------------------- /docs/guide/dataset.rst: -------------------------------------------------------------------------------- 1 | .. _guide_dataset_prep: 2 | 3 | =================== 4 | Dataset Preparation 5 | =================== 6 | 7 | This part of the guide is a work in progress. For now you can get an idea of how 8 | the datasets should be organized and prepared by viewing two example datasets 9 | located `here `_. 10 | 11 | The issue tracker on Github is being used to track additions to this 12 | documentation section. Please see :issue:`34`. 13 | -------------------------------------------------------------------------------- /yatsm/log_yatsm.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | _FORMAT = '%(asctime)s:%(levelname)s:%(lineno)s:%(module)s.%(funcName)s:%(message)s' 4 | _formatter = logging.Formatter(_FORMAT, '%H:%M:%S') 5 | _handler = logging.StreamHandler() 6 | _handler.setFormatter(_formatter) 7 | 8 | logger = logging.getLogger('yatsm') 9 | logger.addHandler(_handler) 10 | logger.setLevel(logging.INFO) 11 | 12 | logger_algo = logging.getLogger('yatsm_algo') 13 | logger_algo.addHandler(_handler) 14 | logger_algo.setLevel(logging.WARNING) 15 | -------------------------------------------------------------------------------- /tests/regression/test_regression_transforms.py: -------------------------------------------------------------------------------- 1 | """ Tests for yatsm.regression.transforms 2 | """ 3 | import numpy as np 4 | import patsy 5 | from yatsm.regression.transforms import harm 6 | 7 | 8 | def test_harmonic_transform(): 9 | x = np.arange(735688, 735688 + 100, 1) 10 | design = patsy.dmatrix('0 + harm(x, 1)') 11 | 12 | truth = np.vstack((np.cos(2 * np.pi / 365.25 * x), 13 | np.sin(2 * np.pi / 365.25 * x))).T 14 | 15 | np.testing.assert_equal(np.asarray(design), truth) 16 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.cli.rst: -------------------------------------------------------------------------------- 1 | yatsm.cli package 2 | ================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | yatsm.cli.cache 10 | yatsm.cli.changemap 11 | yatsm.cli.classify 12 | yatsm.cli.console 13 | yatsm.cli.line 14 | yatsm.cli.main 15 | yatsm.cli.map 16 | yatsm.cli.options 17 | yatsm.cli.pixel 18 | yatsm.cli.train 19 | 20 | Module contents 21 | --------------- 22 | 23 | .. automodule:: yatsm.cli 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | -------------------------------------------------------------------------------- /tests/io/test_helpers.py: -------------------------------------------------------------------------------- 1 | """ Tests for ``yatsm.io.helpers`` 2 | """ 3 | import pytest 4 | 5 | from yatsm.io import helpers 6 | 7 | 8 | def test_mkdir_p_success(tmpdir): 9 | helpers.mkdir_p(tmpdir.join('test').strpath) 10 | 11 | 12 | def test_mkdir_p_succcess_exists(tmpdir): 13 | helpers.mkdir_p(tmpdir.join('test').strpath) 14 | helpers.mkdir_p(tmpdir.join('test').strpath) 15 | 16 | 17 | def test_mkdir_p_failure_permission(tmpdir): 18 | with pytest.raises(OSError): 19 | helpers.mkdir_p('/asdf') 20 | -------------------------------------------------------------------------------- /docs/cli/scripts.rst: -------------------------------------------------------------------------------- 1 | .. _scripts: 2 | 3 | Command Line Utilities 4 | ====================== 5 | 6 | The following are command line utilities included in YATSM. When ``yatsm`` is 7 | installed on your system, these scripts are installed in a location in your 8 | ``$PATH`` and should be available at the command line. 9 | 10 | .. toctree:: 11 | :maxdepth: 2 12 | 13 | yatsm 14 | yatsm_pixel 15 | yatsm_line 16 | yatsm_cache 17 | yatsm_train 18 | yatsm_classify 19 | yatsm_changemap 20 | yatsm_map 21 | gen_date_file 22 | -------------------------------------------------------------------------------- /tests/phenology/conftest.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import numpy as np 4 | import pandas as pd 5 | import pytest 6 | 7 | here = os.path.dirname(__file__) 8 | 9 | 10 | @pytest.fixture(scope='module') 11 | def df(request): 12 | """ Return a Pandas df of example EVI timeseries """ 13 | df = pd.read_csv(os.path.join(here, 'data', 'evi_test.csv')) 14 | df.columns = ['yr', 'doy', 'prd', 'evi'] 15 | 16 | # Mask invalid EVI data 17 | mask = np.where((df['evi'] >= 0) & (df['evi'] <= 1))[0] 18 | df = df.ix[mask] 19 | 20 | return df 21 | -------------------------------------------------------------------------------- /yatsm/mapping/__init__.py: -------------------------------------------------------------------------------- 1 | """ Module for making map products from YATSM results 2 | 3 | Contains functions used in "map" command line interface script. 4 | """ 5 | 6 | from .changes import get_change_date, get_change_num 7 | from .classification import get_classification 8 | from .phenology import get_phenology 9 | from .prediction import get_coefficients, get_prediction 10 | 11 | __all__ = [ 12 | 'get_change_date', 13 | 'get_change_num', 14 | 'get_classification', 15 | 'get_phenology', 16 | 'get_coefficients', 17 | 'get_prediction' 18 | ] 19 | -------------------------------------------------------------------------------- /yatsm/regression/diagnostics.py: -------------------------------------------------------------------------------- 1 | """ Regression diagnostics calculations 2 | 3 | Includes: 4 | - rmse: calculate root mean squared error 5 | """ 6 | import numpy as np 7 | 8 | from ..accel import try_jit 9 | 10 | 11 | @try_jit(nopython=True) 12 | def rmse(y, yhat): 13 | """ Calculate and return Root Mean Squared Error (RMSE) 14 | 15 | Args: 16 | y (np.ndarray): known values 17 | yhat (np.ndarray): predicted values 18 | 19 | Returns: 20 | float: Root Mean Squared Error 21 | """ 22 | return ((y - yhat) ** 2).mean() ** 0.5 23 | -------------------------------------------------------------------------------- /bench/benchmarks/regression/robust_fit.py: -------------------------------------------------------------------------------- 1 | """ Benchmark for ``yatsm.regresion.robust_fit`` 2 | """ 3 | from yatsm.regression.robust_fit import RLM 4 | 5 | from ..bench_utils.example_timeseries import PixelTimeseries 6 | 7 | 8 | class BenchRLM(PixelTimeseries): 9 | """ Benchmark robust linear model ``RLM`` calculation 10 | """ 11 | def time_RLM(self, setup): 12 | """ Time robust linear model for 7 series 500 times 13 | """ 14 | for y in setup['Y'][:-1, :]: 15 | for i in range(500): 16 | RLM().fit(setup['X'], y) 17 | -------------------------------------------------------------------------------- /bench/benchmarks/regression/recresid.py: -------------------------------------------------------------------------------- 1 | """ Benchmark for ``yatsm.regresion.recresid`` 2 | """ 3 | from yatsm.regression.recresid import recresid 4 | 5 | from ..bench_utils.example_timeseries import PixelTimeseries 6 | 7 | 8 | class BenchRecresid(PixelTimeseries): 9 | """ Benchmark recursive residual calculation 10 | """ 11 | def time_recresid(self, setup): 12 | """ Time recursive residuals for 7 series 500 times each 13 | """ 14 | for y in setup['Y'][:-1, :]: 15 | for i in range(500): 16 | recresid(setup['X'], y) 17 | -------------------------------------------------------------------------------- /tests/phenology/test_phenology_longtermmean.py: -------------------------------------------------------------------------------- 1 | """ Tests for yatsm.phenology.longtermmean 2 | """ 3 | import numpy as np 4 | 5 | import yatsm.phenology.longtermmean as ltm 6 | 7 | 8 | def test_scale_EVI(df): 9 | evi_norm = ltm.scale_EVI(df['evi'].values, df['prd'].values) 10 | np.testing.assert_almost_equal(evi_norm.max(), 1.69351, decimal=5, 11 | err_msg='Scaled EVI max is not correct') 12 | np.testing.assert_almost_equal(evi_norm.min(), -0.2385107, decimal=5, 13 | err_msg='Scaled EVI min is not correct') 14 | -------------------------------------------------------------------------------- /docs/yatsm/yatsm.regression.rst: -------------------------------------------------------------------------------- 1 | yatsm.regression package 2 | ======================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | yatsm.regression.pickles 10 | 11 | Submodules 12 | ---------- 13 | 14 | .. toctree:: 15 | 16 | yatsm.regression.design 17 | yatsm.regression.diagnostics 18 | yatsm.regression.packaged 19 | yatsm.regression.recresid 20 | yatsm.regression.robust_fit 21 | yatsm.regression.transforms 22 | 23 | Module contents 24 | --------------- 25 | 26 | .. automodule:: yatsm.regression 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | -------------------------------------------------------------------------------- /tests/regression/conftest.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import numpy as np 4 | import pandas as pd 5 | import pytest 6 | 7 | here = os.path.dirname(__file__) 8 | 9 | 10 | @pytest.fixture(scope='function') 11 | def prng(): 12 | return np.random.RandomState(123456789) 13 | 14 | 15 | @pytest.fixture(scope='function') 16 | def airquality(request): 17 | airquality = pd.read_csv(os.path.join(here, 'data', 'airquality.csv')) 18 | airquality.columns = ['Unnamed', 'Ozone', 'SolarR', 'Wind', 19 | 'Temp', 'Month', 'Day'] 20 | airquality = airquality.dropna() 21 | 22 | return airquality 23 | -------------------------------------------------------------------------------- /docs/cli/usage/yatsm_pixel.txt: -------------------------------------------------------------------------------- 1 | $ yatsm pixel --help 2 | Usage: yatsm pixel [OPTIONS] 3 | 4 | Options: 5 | --band Band to plot [default: 1] 6 | --plot [TS|DOY|VAL] Plot type [default: TS] 7 | --ylim Y-axis limits 8 | --style