Recent Releases of PyMap3D

PyMap3D - Bugfix: don't use numpy.seterr

use warnings.catch_warnings() context manager instead of numpy.seterr to avoid breaking other programs that import pymap3d and want their warnings not to be errors.

Thanks @sanguinariojoe for the report and suggested fix

Scientific Software - Peer-reviewed - Python
Published by scivision almost 3 years ago

PyMap3D - overhaul Ellipsoid, fix Numpy warning to error

  • Numpy would issue warnings that could cause incorrect computations by not being caught in try: except: for things like divide by zero. This has been fixed.
  • overhaul the Ellipsoid() class
  • apply good coding style and use only pyproject.toml (no setup.py, setup.cfg)
  • Require Python >= 3.8: Numpy NEP29 dropped support for Python < 3.8 in December 2021. We are having a harder time supporting corner cases in Python 3.7.

Scientific Software - Peer-reviewed - Python
Published by scivision about 3 years ago

PyMap3D - project PEP517

thanks @EpicWink

Scientific Software - Peer-reviewed - Python
Published by scivision over 3 years ago

PyMap3D - add spherical<->geodetic transforms, enhance inputs and testing

lookAtSpheroid allows all inputs to be arrays of same shape

add functions spherical2geodetic, geodetic2spherical thanks @leouieda

remove internal "use_astropy" option

add mathfun.py to abstract numpy/math fallback

Scientific Software - Peer-reviewed - Python
Published by scivision over 3 years ago

PyMap3D - remove most numeric type hint

The type hinting for most numerics was removed to avoid causing external package problems as per #50. thanks @randallpittman The CI coverage was improved by testing each supported Python version across MacOS, Linux, and Windows. The PEP621 pyproject.toml meta was removed to avoid duplication and conflicts with setup.cfg. thanks @philblckwd

Scientific Software - Peer-reviewed - Python
Published by scivision almost 4 years ago

PyMap3D - ecef2geodetic stability with float32

enhance ecef2geodetic stability with float32

Scientific Software - Peer-reviewed - Python
Published by scivision over 4 years ago

PyMap3D - loxodrome_direct stability near asymptote

Thanks to @noritada for finding and making tests for loxodrome_direct issues. Always appreciate hearing where the test suite isn't covering a broken case.

used numpy.broadcast_arrays to simplify code.

Scientific Software - Peer-reviewed - Python
Published by scivision over 4 years ago

PyMap3D - loxodrome_direct stability near asymptote, enhance CI

CI tests Python 3.7...3.10

Added stability to loxodromedirect for azimuth = {90,-90,270,-270} enhanced efficiency of loxodromeinverse for stability

Scientific Software - Peer-reviewed - Python
Published by scivision over 4 years ago

PyMap3D - speed imports, add -m pymap3d.{vdist,reckon}

Don't automatically import less widespread used modules including: lox los rcurve rsphere ` this speeds imports for most users.

add command line convenience functions:

```sh python -m pymap3d.vdist python -m pymap3d.vreckon

```

Scientific Software - Peer-reviewed - Python
Published by scivision almost 5 years ago

PyMap3D - bugfix: ecef2geodetic inside bug from 2.6.0

when implementing the speedup of 2.6.0, a mistake was made in ecef2geodetic that could cause an exception. This is now fixed thanks to @dschurman

Scientific Software - Peer-reviewed - Python
Published by scivision almost 5 years ago

PyMap3D - 100x speedup for Numpy operations

eliminated numpy.vectorize for ~100x speedup of many of the pymap3d functions, while still preserving the "no-Numpy" functionality for scalars.

Scientific Software - Peer-reviewed - Python
Published by scivision almost 5 years ago

PyMap3D - pypi readme fix, pep621

Scientific Software - Peer-reviewed - Python
Published by scivision almost 5 years ago

PyMap3D - Python >= 3.7, modernize type annotations

For better internal quality, modernize type annotations in accord with Numpy 1.20 final release. This requires __future__.annotations, which requires Python >= 3.7. For many months, Python 3.5 use of pymap3d has been ≪ 1% Python 3.6 use of pymap3d continues to drop as current Numpy requires Python >= 3.7 as well.

Python 3.5 and 3.6 users can continue to use pymap3d 2.4.x. If we find any significant bugs, we plan to backport them to pymap3d 2.4.x as long as there is still significant pymap3d usage from Python < 3.7.

Scientific Software - Peer-reviewed - Python
Published by scivision about 5 years ago

PyMap3D - prepare for optional Numpy 1.20 type hinting

Numpy 1.20 adds optional type hinting in the numpy.typing module. ArrayLike is a key type we feel appropriate for PyMap3D. PyMap3D will continue to work without Numpy or older versions of Numpy.

We add optional type hinting using numpy.typing.ArrayLike

Scientific Software - Peer-reviewed - Python
Published by scivision over 5 years ago

PyMap3D - add codecov, cleanup test

  • remove extraneous syntax from tests
  • add codecov

Scientific Software - Peer-reviewed - Python
Published by scivision over 5 years ago

PyMap3D - ECI: restore less accurate Numpy-only fallback

v2.4.0 too boldly removed the non-AstroPy ECI conversions that only require Numpy. However, the Numpy-only fallback can have several percent error due to rotation only being considered. AstroPy considers higher-order effects that greatly increase accuracy of conversions involving ECI (eci2* or *2eci)

This release restores optional status of AstroPy for ECI, but Numpy is still required for ECI as it always has been for PyMap3d.

Scientific Software - Peer-reviewed - Python
Published by scivision almost 6 years ago

PyMap3D - eci: use AstroPy

The ECI calculation error was substantial for some applications due to only considering Earth rotation. Now ECI calculations use AstroPy for better accuracy (< 1% error) considering more factors in the ECI transformations. Fixes #33

Added geodetic2eci

Added more ECI self-tests

Temporarily pinned CI to Python 3.8 to avoid the usual issues with brand new Python releases not immediately having PyPi wheels for Astropy. We still also test Python 3.5.

Scientific Software - Peer-reviewed - Python
Published by scivision almost 6 years ago

PyMap3D - return scalars when result is scalar

also move to python "src/" directory layout

Scientific Software - Peer-reviewed - Python
Published by scivision almost 6 years ago

PyMap3D - return scalar for scalar input

v2.0 introduced the use of numpy.vectorize to allow seamless pymap3d use with ndarray but also without numpy and scalars. However, this returned 0-d ndarray for certain functions rather than scalars for scalar inputs. This fixes that issue and adds tests for it.

Scientific Software - Peer-reviewed - Python
Published by scivision about 6 years ago

PyMap3D - add geod2geoc, geoc2geod

API change: the last releases geodetic2geocentric and geocentric2geodetic have a "alt_m" parameter now. Set it to zero to act like before / Matlab. include the altitude to account for object height above ellipsoid.

Type hinting / quality / refactoring

Added diagnostic plots

Corrected / updated docs and error messages.

Scientific Software - Peer-reviewed - Python
Published by scivision about 6 years ago

PyMap3D - add numerous geodetic / spherical transforms from @rpavlick

Thanks to @rpavlick for adding numerous functions in rcurve, rsphere, latitude, lox, utils and more. These functions each had tests written. Further, some Numpy functionality that was accidentally removed from v2.0 was restored for v2.1.

The goal of the PyMap3D package remains to support non-Numpy users, while also fully supporting those who have Numpy. The non-Numpy users are typically robots or platforms that stream positions in realtime, and don't need arrays, and want the faster performance of Python's built-in math module.

Scientific Software - Peer-reviewed - Python
Published by scivision over 6 years ago

PyMap3D - unify ellipsoid spec, add geocentric <=> geodetic latitude conversion

also breaking out tests to make easier to read and more comprehensive (checking for singularities, numpy vs scalar, etc.)

Scientific Software - Peer-reviewed - Python
Published by scivision over 6 years ago

PyMap3D - Drop Python 2.x, improve numerical stability, improve non-Numpy use, move to GitHub Actions CI

  • Drop Python 2.x as code duplication and maintenance burden is too high.
  • improve numerical stability, thanks @bcminch #27
  • make non-Numpy use a first-class use case, with all but ECI working without Numpy (let us know if non-Numpy ECI is desirable). Of course Numpy, Pandas and Xarray are still handled first-class as well.
  • move CI to GitHub Actions.

Scientific Software - Peer-reviewed - Python
Published by scivision over 6 years ago

PyMap3D - enhance CI integration, modularize

Put ellipsoid in own file put examples in own dir

test python setup.py install as well as python setup.py develop

Scientific Software - Peer-reviewed - Python
Published by scivision over 6 years ago

PyMap3D - Enable fallback to Python 2.6, 2.7 and 3.4

Full functionality of PyMap3D (as with Python in general in 2019) requires Python ≥ 3.5, but a useful subset is made available to Python 2.6, 2.7 and 3.4. This is relevant to MicroPython and ROS users and other special use cases where currently supported Python versions may not yet be readily available.

Put Ellipsoid() in its own file for clarity and flexibility with other packages.

ECI functions previously had an API unlike other PyMap3D functions, they are now the same as the rest of PyMap3D (scalar or N-D array for each variable).

Scientific Software - Peer-reviewed - Python
Published by scivision almost 7 years ago

PyMap3D - more input types

added several tests so that Pandas and Xarray are functioning.

Also handles ecef2geodetic scalar input.

Scientific Software - Peer-reviewed - Python
Published by scivision almost 7 years ago

PyMap3D - BUGFIX: aer2geogetic ellipsoid specifier

AER2GEODETIC was always going to the default WGS84 ellipsoid since the ell= argument was not present. We have fixed this error.

Also did a complete rewrite of documentation to numpydoc standards (mostly) and regenerated with pdoc3.

Scientific Software - Peer-reviewed - Python
Published by scivision almost 7 years ago

PyMap3D - BUGFIX: ecef2geodetic negative altitude

Corrected algorithmic error for ecef2geodetic where negative altitude wrapped to positive altitude

parameterized tests to provide better coverage of singularities / edge cases

Scientific Software - Peer-reviewed - Python
Published by scivision about 7 years ago

PyMap3D - pdoc docs, negative altitude OK

use pdoc instead of sphinx for autogen docs

Don't limit altitude to be positive in geodetic2ecef, useful for near-earth WGS84 not exactly matching Earth's complicated surface.

Scientific Software - Peer-reviewed - Python
Published by scivision about 7 years ago

PyMap3D - closed form ecef2geodetic

Improving accuracy and computation speed, a more modern closed form ecef2geodetic is implemented.

More self-tests.

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - handle more types of arrays

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - Astropy completely optional, test with pandas and xarray times

Made AstroPy completely optional for all functions, including ECI conversions

added tests for times coming in from Pandas and Xarray.

Note: removed PyPy from Travis-CI because Travis has old PyPy versions. However PyMap3D does still work with the current release of PyPy3 (6.0)

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - Reveal aer2eci, cleanup typing, improve test coverage

aer2eci was accidentally hidden before.

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - add rhumb line functions

added functions * track2 (like Matlab) * loxodrome_inverse (like Matlab distance('rh',...)azimuth('rh', ...)) * some auxillary functions inlox.py`

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - add ellipsoid to vincenty, python >= 3.5 and PyPy3

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - ellipsoid for other planets, more robust vincenty API and testing

Ellipsoid() now covers more Earth ellipsoid systems as well as a couple other planetary bodies such as Mars, Venus and the Moon. Feel free to pull request your own as usual, or ask.

Using Numpy ≥ 1.10.0 broadcast_to instead of tile in vreckon vdist to reduce memory usage and improve speed by using views instead of copies.

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - Move Matlab, Fortran to own repos, validate slant range and altitude

check for negative slant range or altitude

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - Matlab/Octave function validation

add parameter verification to Matlab/Octave functions (e.g. number of arguments, type of arguments)

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - add lookAtSpheroid

Add lookAtSpheroid to Python, Matlab/Octave, Fortran code. This determines the intersection point of a look angle from an object above the spheroid

improve test modularity and robustness with minimum prereqs (Numpy)

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - console entry points

  • CI Template update
  • console scripts easier to use

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - Modernize setup and test

modernize setup (setup.cfg)

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - Cleanup Fortran

  • Cleaned up Fortran code error handling
  • fixed Python code coverage testing
  • Readme.rst => Readme.md

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - Type checking, flake8

Use flake8 and mypy type checking to improve correctness * Python >= 3.6 required

Scientific Software - Peer-reviewed - Python
Published by scivision over 7 years ago

PyMap3D - Improve robustness for CMake Fortran build & Matlab self-test

Scientific Software - Peer-reviewed - Python
Published by scivision almost 8 years ago

PyMap3D - allow radians or degrees into angular separation

This speeds up massively repeated operations of these functions--convert once to radians beforehand instead of each time (optionally)

Scientific Software - Peer-reviewed - Python
Published by scivision almost 8 years ago

PyMap3D - cleanup, test coverage, argument expansion

Lots of little improvements:

  • cleaned up Python self-test and improved coverage via argument expansion
  • added AppVeyor (windows testing)
  • published in DOI
  • using Ctest

Scientific Software - Peer-reviewed - Python
Published by scivision almost 8 years ago

PyMap3D - Fortran radians bugfix, add err_msg to Fortran & Matlab assert

  • Fixed incorrect calculations with "radians" input angles to Fortran code.
  • allowed "errmag" text message for assertisclose() in Fortran and Matlab code, like Python
  • improved test coverage in Fortran and Python.

Scientific Software - Peer-reviewed - Python
Published by scivision almost 8 years ago

PyMap3D - Correct function/variable names

Corrected names of anglesep (angular separation) formulas.

Added radec2azel,azel2radec to Fortran.

Updated paper to describe Fortran code

Scientific Software - Peer-reviewed - Python
Published by scivision about 8 years ago

PyMap3D - pure Python fallback, Python 2.6 - 3.7+

For users without Numpy, PyMap3D can now fallback to a subset of functionality with Python alone.

Python versions tested: 2.6, 2.7, 3.3, 3.4, 3.5. 3.6, 3.7 (that's all that Travis-CI supports)

Scientific Software - Peer-reviewed - Python
Published by scivision about 8 years ago

PyMap3D - Matlab compatibility and HTML docs

Better API compatibility with Matlab Mapping Toolbox.

HTML docs for Matlab and Python.

Scientific Software - Peer-reviewed - Python
Published by scivision about 8 years ago

PyMap3D - Matlab and cleanup

  • Added several Matlab/Octave functions (save $1000 on Matlab Mapping Toolbox).
  • cleaned up self-test

Scientific Software - Peer-reviewed - Python
Published by scivision about 8 years ago

PyMap3D - Python 2.7 - 3.7 compatible

On request Python 2.7 - 3.7 compatible.

Also added fallback simpler (but less accurate) functions where AstroPy not available.

Scientific Software - Peer-reviewed - Python
Published by scivision about 8 years ago

PyMap3D - prereqs

PEP8, standardize setup.py

Scientific Software - Peer-reviewed - Python
Published by scivision about 8 years ago

PyMap3D - py27-py36

Scientific Software - Peer-reviewed - Python
Published by scivision almost 9 years ago

PyMap3D - Vincenty, API

Scientific Software - Peer-reviewed - Python
Published by scivision almost 9 years ago

PyMap3D - Python 3D coordinate conversions for geospace

Scientific Software - Peer-reviewed - Python
Published by drhirsch about 9 years ago