Metadata-Version: 2.1
Name: polylx
Version: 0.5.2
Summary: A Python package to visualize and analyze microstructures.
Home-page: https://github.com/ondrolexa/polylx
Author: Ondrej Lexa
Author-email: lexa.ondrej@gmail.com
License: MIT
Project-URL: Documentation, https://polylx.readthedocs.io/
Project-URL: Source Code, https://github.com/ondrolexa/polylx/
Project-URL: Bug Tracker, https://github.com/ondrolexa/polylx/issues/
Keywords: polylx
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Provides-Extra: docs
Provides-Extra: test
Provides-Extra: lint
Provides-Extra: jupyter
License-File: LICENSE
License-File: AUTHORS.md

# PolyLX - python package to visualize and analyze digitized 2D microstructures

[![PyPI version](https://badge.fury.io/py/polylx.svg)](https://badge.fury.io/py/polylx)
[![Testing](https://github.com/ondrolexa/polylx/actions/workflows/pythontest.yml/badge.svg?event=push)](https://github.com/ondrolexa/polylx)
[![Documentation Status](https://readthedocs.org/projects/polylx/badge/?version=stable)](https://polylx.readthedocs.io/en/stable/?badge=stable)
[![DOI](https://zenodo.org/badge/30773592.svg)](https://zenodo.org/badge/latestdoi/30773592)

## Installation

### PyPI

To install PolyLX, just execute
```
pip install polylx
```

#### Upgrading via pip

To upgrade an existing version of PolyLX from PyPI, execute
```
pip install polylx --upgrade --no-deps
```
Please note that the dependencies (Matplotlib, NumPy, Pandas, NetworkX, seaborn, shapely, pyshp and SciPy) will also be upgraded if you omit the `--no-deps` flag; use the `--no-deps` ("no dependencies") flag if you don't want this.

#### Installing PolyLX with conda or mamba

Another common way to install is create environment using conda or mamba. Download latest version of [polylx](https://github.com/ondrolexa/polylx/archive/refs/heads/master.zip) and unzip to folder of your choice. Use conda or mamba to create an environment from an ``environment.yml`` file. Open the terminal, change directory where you unzip the source and execute following command:

```
conda env create -f environment.yml
```
Activate the new environment and install from current directory::

```
conda activate polylx
pip install polylx
```

## Getting started

Documentation is in progress, but you can see PolyLX in action in accompanied Jupyter notebook
[https://nbviewer.ipython.org/github/ondrolexa/polylx/blob/master/polylx_tutorial.ipynb](https://nbviewer.ipython.org/github/ondrolexa/polylx/blob/master/polylx_tutorial.ipynb)

## Documentation

Explore the full features of PolyLX. You can find detailed documentation [here](https://polylx.readthedocs.org).

## Contributing

Most discussion happens on [Github](https://github.com/ondrolexa/polylx). Feel free to open [an issue](https://github.com/ondrolexa/polylx/issues/new) or comment on any open issue or pull request. Check ``CONTRIBUTING.md`` for more details.

## License

PolyLX is free software: you can redistribute it and/or modify it under the terms of the MIT License. A copy of this license is provided in ``LICENSE`` file.


# Changes

### 0.5.2 (06 Mar 2023)

 * bug fix release and shapely 2.0 update
 * topological analyses added to Fracnet

### 0.5.1 (27 May 2021)

 * fourier_ellipse shape method for Grains added
 * eliptic fourier smoothing for Grains added
 * added grainsize plot
 * added accumulate method to Grains and Boundaries
 * simple fiona reader implemented (fiona must be installed)
 * added kde plot

## 0.5 (29 Jan 2019)

 * rose plot groupped according to classification
 * get_class, class_iter methods added to Grains and Boundaries
 * seaborn added to requirements
 * several seaborn categorical plots are added as methods
   (swarmplot, boxplot, barplot, countplot)

### 0.4.9 (12 Dec 2017)

* getindex method of Grains and Boundaries implemented
* Grain cdist property return centroid-vertex distance function
* Grain cdir property return centroid-vertex direction function
* Grain shape_vector property returns normalized Fourier descriptors
* Grain regularize method returns Grain with regularly distributed vertices
* Classification could be based on properties or any other values
* boundary_segments method added
* Smoothing, simplification and regularization of boundaries implemented
* Colortable for legend is persistant trough indexing. Classify method
  could be used to change it
* Default color table is seaborn muted for unique classification
  and matplotlib viridis for continuous classes

### 0.4.8 (04 Mar 2017)

* bugfix

### 0.4.6 (04 Mar 2017)

* added plots module (initial)
* representative_point for Grains implemented
* moments calculation including holes
* surfor and parror functions added
* orientation of polygons is unified and checked
* minbox shape method added

### 0.4.5 (12 Jan 2017)

* shell script ipolylx opens interactive console

### 0.4.4 (12 Jan 2017)

* Added MAEE (minimum area enclosing ellipse) to grain shape methods
* Removed embedded IPython and IPython requirements

### 0.4.3 (02 Sep 2016)

* IPython added to requirements

### 0.4.2 (02 Sep 2016)

* Sample has pairs property(dictionary) to map boundary id to grains id
* Sample triplets method returns list of grains id creating triple points

### 0.4.1 (20 Jun 2016)

* Examples added to distribution

## 0.4 (20 Jun 2016)

* Sample neighbors_dist method to calculate neighbors distances
* Grains and Boundaries nndist to calculate nearest neighbors distances
* Fancy indexing with slices fixed
* Affine transformations affine_transform, rotate, scale, skew, translate
  methods implemented for Grains and Boundaries
* Sample name atribute added
* Sample bids method to get boundary id's related to grain added

### 0.3.2 (04 Jun 2016)

* PolyShape name forced to be string
* Creation of boundaries is Grains method

### 0.3.1 (22 Feb 2016)

* classification is persitant trough fancy indexing
* empty classes allowed
* bootstrap method added to PolySet

## 0.2 (18 Apr 2015)

* Smooth and simplify methods for Grains implemented
* Initial documentation added
* `phase` and `type` properties renamed to `name`

## 0.1 (13 Feb 2015)

* First release



