Metadata-Version: 2.1
Name: mixmasta
Version: 0.3.0
Summary: A library for common scientific model transforms
Home-page: https://github.com/jataware/mixmasta
Author: Brandon Rose
Author-email: brandon@jataware.com
License: MIT license
Keywords: mixmasta
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.5
Description-Content-Type: text/markdown
Requires-Dist: pip (==19.2.3)
Requires-Dist: bump2version (==1.0.1)
Requires-Dist: wheel (==0.33.6)
Requires-Dist: watchdog (==0.9.0)
Requires-Dist: flake8 (==3.7.8)
Requires-Dist: tox (==3.14.0)
Requires-Dist: coverage (==4.5.4)
Requires-Dist: Sphinx (==1.8.5)
Requires-Dist: twine (==1.14.0)
Requires-Dist: Click (>=7.0)
Requires-Dist: pyproj (==2.6.1.post1)
Requires-Dist: numpy (>=1.20.1)
Requires-Dist: Shapely (==1.7.1)
Requires-Dist: geopandas (==0.8.1)
Requires-Dist: Rtree (==0.8.3)
Requires-Dist: GDAL (==3.1.4)
Requires-Dist: netCDF4 (==1.5.3)
Requires-Dist: rasterio (>=1.1.0)
Requires-Dist: xarray (==0.16.1)
Requires-Dist: tqdm (<5.0.0,>=4.41.1)

# mixmasta

A library for common scientific model transforms. This library enables fast and intuitive transforms including:

* Converting a `geotiff` to a `csv`
* Converting a `NetCDF` to a `csv`
* Geocoding `csv` data that contains latitude and longitude


## Setup

Ensure you have a working installation of [GDAL](https://trac.osgeo.org/gdal/wiki/FAQInstallationAndBuilding#FAQ-InstallationandBuilding)

You also need to ensure that `numpy` is installed prior to `mixmasta` installation. This is an artifact of GDAL, which will build incorrectly if `numpy` is not already configured:

```
pip install numpy==1.20.1
pip install mixmasta
```

> Note: if you had a prior installation of GDAL you may need to run `pip install mixmasta --no-cache-dir` in a clean environment.

You must install the GADM2 data with:

```
mixmasta download
```

## Usage


Examples can be found in the `input` directory.

Convert a geotiff to a dataframe with:

```
from mixmasta import mixmasta as mix
df = mix.raster2df('chirps-v2.0.2021.01.3.tif', feature_name='rainfall', band=1)
```

Note that you should specify the data band of the geotiff to process if it is multi-band. You may also specify the name of the feature column to produce. You may optionally specify a `date` if the geotiff has an associated date. For example:

Convert a NetCDF to a dataframe with:

```
from mixmasta import mixmasta as mix
df = mix.netcdf2df('tos_O1_2001-2002.nc')
```

Geocode a dataframe:

```
from mixmasta import mixmasta as mix

# First, load in the geotiff as a dataframe
df = mix.raster2df('chirps-v2.0.2021.01.3.tif', feature_name='rainfall', band=1)

# next, we can geocode the dataframe to the admin-level desired (`admin2` or `admin3`)
# by specifying the names of the x and y columns 
# in this case, we will geocode to admin2 where x,y are are 'longitude' and 'latitude', respectively.
df_g = mix.geocode("admin2", df, x='longitude', y='latitude')
```

## Running with CLI

After cloning the repository and changing to the `mixmasta` directory, you can run mixmasta via the command line. 

Set-up:

While you can point `mixmasta` to any file you would like to transform, the examples below assume your file is in the `inputs` folder; the transformed `.csv` file will be written to the `outputs` folder.

- Transform geotiff to geocoded csv:
```
python3 mixmasta/cli.py -xform geotiff -input_file chirps-v2.0.2021.01.3.tif -output_file geotiffTEST.csv \
                        -geo admin2 -feature_name rainfall -band=1 -date='5/4/2010' -x longitude -y latitude
```

- Transform geotiff to csv:
```
python3 mixmasta/cli.py -xform geotiff -input_file maxhop1.tif -output_file maxhopOUT.csv \
                        -geo admin2 -feature_name probabilty -band=1 -x longitude -y latitude
```

- Transform netcdf to geocoded csv:

```
python3 mixmasta/cli.py -xform netcdf -input_file tos_O1_2001-2002.nc -output_file netcdf.csv \
                        -geo admin2 -x lon -y lat
```

- Transform netcdf to csv:
```
python3 mixmasta/cli.py -xform netcdf -input_file tos_O1_2001-2002.nc -output_file netcdf.csv
```

-geocode an existing csv file:

```
python3 mixmasta/cli.py -xform geocode -input_file no_geo.csv -geo admin3 -output_file geoed_no_geo.csv \
                        -x longitude -y latitude
```


## Credits

This package was created with [Cookiecutter](https://github.com/audreyr/cookiecutter) and the [audreyr/cookiecutter-pypackage](https://github.com/audreyr/cookiecutter-pypackage) project template.


# History

## 0.1.0 (2021-02-24)

-   First release on PyPI.



