This is a Python 3.X port of my Python 2.X module containing a bunch of random functions that I have written over the years. The documentation is on Read The Docs and the module is on PyPI.
To install PyGuymer3, run:
# To install the latest released version from PyPI:
pip install --user PyGuymer3
# To install the latest development version from GitHub:
pip install --user git+https://github.com/Guymer/PyGuymer3.git
... and everything should "just work".
PyGuymer3 requires the following Python modules to be installed and available in your PYTHONPATH
:
Additionally, due to the dependency on my FORTRAN library, if you want to run the FORTRAN-based functions in the f90 sub-module then you will also require the following Python modules to be installed and available in your PYTHONPATH
:
Similarly, PyGuymer3 requires the following binaries to be installed and available in your PATH
:
dot
exiftool
ffmpeg
andffprobe
gifsicle
git
jpegtran
lsdvd
metaflac
mp4file
optipng
tar
xz
import this
- Read this good StackOverflow answer describing type-checking which also provides a quick summary on PEP 484 and PEP 3107.
- This module has been created from my Python 2.X module using the utility
2to3
. As such, there may be bugs in the code as most of it has not been tested since the port. If you find anything wrong then please raise a bug report on GitHub. - The function pyguymer3.geo.area() sometimes returns erroneous areas. This has been tracked down to the Shapely function shapely.ops.voronoi_diagram(): for certain inputs (often when a point within the shape is exactly
0.0
) some of the parts of the Voronoi diagram are inverted. When it goes wrong it reliably goes wrong for those inputs. Below, the blue circle is the 1 km buffer around a point at(0.0°, 0.0°)
and the orange wedges are the parts of the Voronoi diagram. Note that the orange wedges foriVoroPoly = 8
andiVoroPoly = 31
are inverted - they are the negative of what they are supposed to be. As a consequence, when the area of each orange wedge is calculated and summed the total is very wrong..