d1f7d37
- drop stale black requirement (commit by @martibosch)
913fb06
- catch pyogrio errors when reading zones for geopandas>1 (commit by @martibosch)
-
due to
bbef272
- rename kws -> kwargs (commit by @martibosch):rename kws -> kwargs
2dafaaf
- use dask to compute metrics' dataframes in parallel (commit by @martibosch)a47f333
- multilandscape.landscape_ser, DRY compute metrics dfs, dask (commit by @martibosch)d480243
- single-class (or landscape-level) zonal gdf (commit by @martibosch)
ea7cde5
- missing fragstats abbrevs for core (also use f-strings) (commit by @martibosch)d074f32
- len in SpatioTemporalZonalAnalysis (commit by @martibosch)1ce4a4e
- min two classes warning for entropy (credits to @kareed1) (commit by @martibosch)72c1cc9
- except zerodivisionerror in disjunct_core_area_am (commit by @martibosch)6fa816c
- catch fiona DriverError forzones
when fiona is installed (commit by @martibosch)
bbef272
- rename kws -> kwargs (commit by @martibosch)
- core area metrics (#45)
- apply
to_numeric
in stza compute_class_metrics_df - fillna with 0 for core area metrics
- 3.0.0rc0 (#40)
- manual cbuildwheel steps (until action is in marketplace) (#28)
- single quotes in release.yml (see actions/runner/issues/866) (#27)
- manage dtype for adj/reclassif arrays; fix reclassif arr init
- fix sum(level) -> groupby(level).sum (pandas deprecation)
- dropped six for metaclasses (using direct ABC inheritance)
- GitHub Actions tests in develop branch too
- added methods to compute information theory-based metrics by Nowosad et Stepinski (2019).
- using pre-commit with black, isort, flake8 and pydocstyle
- CI (tests) and CD (release to PyPI) with github actions
- improved exception caching in compute metric data frames methods
- init
BufferAnalysis
withLandscape
with non-Nonetransform
- test required init args in
Landscape
andZonalGridAnalysis
- test
ValueError
in data frames with patch/class/landscape-only metrics - several corrections in docstrings/comments/error msgs
- fix: removed
SpatioTemporalBufferAnalysis._landscape_metrics_df
(dropped this kind of caching in v2.0.0) - using python3
super
with no arguments - added
neighborhood_rule
argument (to choose 4/8-cell adjacencies) - fixed legend in
plot_landscape
and addedlegend_kws
arg - fixed multilandscape plot with one landscape, e.g., 1-zone analysis
- fixed values of zone_arr (to id zones) to avoid nodata=0 confusion
- default nodata (when providing numpy arrays) from settings module
ZonalAnalysis.attribute_name
frommasks
when providing geoseries- avoid reprojecting equivalent CRS (pyproj
__eq__
vs.is_exact_same
) inZonalAnalysis
- fill
NaN
values according to the metric inMultiLandscape.compute_class_metrics_df
- consistent imports so that there are no direct class/function calls, and no module abbreviations in the documentation
- zonal analysis with more general
masks
argument, which also accepts vector geometries (and replaces the now deprecatedmasks_arr
)
- ensure numeric dtypes in metrics data frames
np.nan
nodata in img passed torasterio.plot.show
inplot_landscape
- more robust
loc
(with index and columns) to compute metrics data frames inMultiLandscape
- corrected
ZonalGridAnalysis
docstring - corrected computation of
num_zone_cols
inZonalGridAnalysis
- configured flake8 in setup.cfg and added flake8 test in travis.yml
- added
compute_zonal_statistics
method toZonalAnalysis
and adedZonalGridAnalysis
class - Implemented the
effective_mesh_size
metric
- gradient -> zonal
- corrected cmap arg: default from rcParams, accept str
- updates in the docs (changed link to notebook + cleaned Makefile)
- corrected shapely version in setup.py (bumpversion messed it)
- updated bumpversion for release candidates
- catch TypeError for existing metrics but at the wrong level
- always import modules, not methods/classes
- consistent API: all data frames obtained with
compute
methods
- corrected rst typo in
total_area
docs - fixed missing perimeter distribution statistic metric and dried class constants definitions
- fixed patch edge array computation when computing ENN (otherwise the speed-up of 1.1.0 is not effective)
- speed-up (~x2) in
Landscape.compute_patch_euclidean_nearest_neighbor
: compute pixel-to-pixel distances for patch edges only
- fix landscape array dtype in
SpatioTemporalBufferAnalysis
- included
LICENSE
inMANIFEST.in
- deleted Python 2 classifiers in
setup.py
- fix ValueError message for
landscape_crs
andlandscape_transform
inBufferAnalysis
- fix landscape array dtype in
GradientAnalysis
andBufferAnalysis
- dropped Python 2 support
- added
SpatioTemporalBufferAnalysis.plot_landscapes
method - added
buffer_dist_legend
argument and docs inSpatioTemporalBufferAnalysis. plot_metric
- fix proper metric data frame properties in
SpatioTemporalBufferAnalysis
- pass
transform
argument when initializatingMultiLandscape
instances (i.e.,SpatioTemporalAnalysis
,BufferAnalysis
,GradientAnalysis
andSpatioTemporalBufferAnalysis
) plot_landscape
andplot_landscapes
with rasterio.plot.show- changed
feature_{name,values}
forattribute_{name,values}
inMultiLandscape
(abstract) class - dropped
plot_metrics
method
- cell width and length comparisons with
numpy.isclose
to deal with imprecisions that come from float pixel resolutions (e.g., in GeoTIFF files) - critical fix: moved pythran signatures from
compute.pythran
tocompute.py
so that the build is properly done when pip-installing
- flat array approach to the computation of the adjacency matrix with pythran to improve performance (plus fixes a bug on the computation of
total_edge
) - initialization of
scipy.spatial.cKDTree
with keyword argumentsbalanced_tree
andcompact_nodes
set toFalse
- methods plotting multiple axes return only the figure instead of a tuple with the figure and the axes
- settings module that allow configuring metrics' labels in plots, defaulting to FRAGSTATS abbreviations
- chaged CRS in tests to work with pyproj >= 2.0.0
- corrected
figlength
forfigwidth
- warn when computing metrics that require an unmet minimum number of patches or classes (and their computation returns nan)
- all tests with
unittest.TestCase
assert methods
- added docstrings for
MultiLandscape
,GradientAnalysis
andBufferAnalysis
- raise
ValueError
when using buffer rings around a polygon geometry
- implemented
SpatioTemporalBufferAnalysis
with a dedicatedplot_metric
method - added buffer ring-wise analysis through a
buffer_rings
boolean argument inBufferAnalysis
- float equality comparations with numpy
isclose
method
- implemented
GradientAnalysis
andBufferAnalysis
- added optional
geopandas
dependences - created abstract
MultiLandscape
class Landscape
initialization from ndarray or geotiff (droppedread_geotiff
method)- implemented
contagion
- convolution-based adjacency dataframe
- fixed bug with
class_cond
inLandscape.compute_arr_edge
- implemented
euclidean_nearest_neighbor
and all its corresponding class/landscape distribution statistic metrics - fixed dtype of
self.classes
inlandscape.Landscape
- set default argument
nodata=None
(instead ofnodata=0
) forlandscape.read_geotiff
- changed test input data files
- implemented
__len__
ofspatiotemporal.SpatioTemporalAnalysis
- corrected if-else statements involving
None
variables
- initial release [v3.0.0]: https://github.com/martibosch/pylandstats/compare/v3.0.0rc2...v3.0.0 [v3.0.1]: https://github.com/martibosch/pylandstats/compare/v3.0.0...v3.0.1