mtgeodesicdome 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mtgeodesicdome-1.2.0/CHANGELOG.md +54 -0
- mtgeodesicdome-1.2.0/CITATION.cff +35 -0
- mtgeodesicdome-1.2.0/CONTRIBUTING.md +40 -0
- mtgeodesicdome-1.2.0/LICENSE +661 -0
- mtgeodesicdome-1.2.0/MANIFEST.in +8 -0
- mtgeodesicdome-1.2.0/NOTICE +60 -0
- mtgeodesicdome-1.2.0/PKG-INFO +448 -0
- mtgeodesicdome-1.2.0/README.md +387 -0
- mtgeodesicdome-1.2.0/docs/index.md +333 -0
- mtgeodesicdome-1.2.0/examples/01_quickstart.py +67 -0
- mtgeodesicdome-1.2.0/examples/02_plot_dome_3d.py +45 -0
- mtgeodesicdome-1.2.0/examples/03_unfolded_net.py +74 -0
- mtgeodesicdome-1.2.0/examples/04_neighbours.py +88 -0
- mtgeodesicdome-1.2.0/examples/05_map_projections.py +61 -0
- mtgeodesicdome-1.2.0/examples/06_spherical_som.py +99 -0
- mtgeodesicdome-1.2.0/examples/07_export_mesh.py +51 -0
- mtgeodesicdome-1.2.0/examples/08_plane_grids.py +58 -0
- mtgeodesicdome-1.2.0/examples/09_interactive_projection.py +75 -0
- mtgeodesicdome-1.2.0/examples/README.md +13 -0
- mtgeodesicdome-1.2.0/examples/dome_utils.py +67 -0
- mtgeodesicdome-1.2.0/examples/legacy/test_geodesicdome.py +52 -0
- mtgeodesicdome-1.2.0/examples/legacy/test_geodesicdome_off.py +109 -0
- mtgeodesicdome-1.2.0/examples/legacy/test_plane_off.py +28 -0
- mtgeodesicdome-1.2.0/examples/legacy/test_projection.py +107 -0
- mtgeodesicdome-1.2.0/examples/legacy/test_projection_2.py +94 -0
- mtgeodesicdome-1.2.0/pyproject.toml +77 -0
- mtgeodesicdome-1.2.0/setup.cfg +4 -0
- mtgeodesicdome-1.2.0/setup_env.sh +397 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/__init__.py +20 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/grid/__init__.py +3 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/grid/geodesicdome.py +563 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/grid/plane.py +276 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/interactive/__init__.py +30 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/interactive/mesh.py +27 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/interactive/rotation.py +57 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/interactive/sphere_map.py +218 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/interactive/viewer.py +411 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/manifold.py +91 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/projection/__init__.py +0 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/projection/equal_earth.py +29 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/projection/kavrayskiy.py +17 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/projection/projection.py +78 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/projection/wagner.py +35 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/py.typed +0 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/util.py +88 -0
- mtgeodesicdome-1.2.0/src/mt/geodesicdome/vertex.py +30 -0
- mtgeodesicdome-1.2.0/src/mtgeodesicdome.egg-info/PKG-INFO +448 -0
- mtgeodesicdome-1.2.0/src/mtgeodesicdome.egg-info/SOURCES.txt +52 -0
- mtgeodesicdome-1.2.0/src/mtgeodesicdome.egg-info/dependency_links.txt +1 -0
- mtgeodesicdome-1.2.0/src/mtgeodesicdome.egg-info/requires.txt +31 -0
- mtgeodesicdome-1.2.0/src/mtgeodesicdome.egg-info/top_level.txt +1 -0
- mtgeodesicdome-1.2.0/tests/test_geodesicdome.py +39 -0
- mtgeodesicdome-1.2.0/tests/test_interactive.py +138 -0
- mtgeodesicdome-1.2.0/tests/test_package.py +17 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes are recorded here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
4
|
+
and the project uses [Semantic Versioning](https://semver.org/).
|
|
5
|
+
|
|
6
|
+
## [Unreleased]
|
|
7
|
+
|
|
8
|
+
## [1.2.0] — 2026-09-28
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- **New home.** Published as `mtgeodesicdome` (import `mt.geodesicdome`) from
|
|
12
|
+
[`takatsuka/mtGeodesicDome`](https://github.com/takatsuka/mtGeodesicDome).
|
|
13
|
+
- `src/` layout; tests in `tests/`; the old plotly/dash viewers moved to `examples/legacy/`.
|
|
14
|
+
- GitHub Actions workflows for tests (Linux, macOS, Windows; Python 3.10–3.14) and PyPI publishing.
|
|
15
|
+
- Code tidied to pass `ruff check` (type hints use built-in generics such as `list[int]`, unused
|
|
16
|
+
variables removed). No change in behaviour.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- `tests/test_geodesicdome.py`: sizes, `split` and neighbour-ring checks.
|
|
20
|
+
- User guide in `docs/index.md`.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
- The abstract methods of `Manifold` and `Projection` raised `TypeError` (`raise NotImplemented()`);
|
|
24
|
+
they now raise `NotImplementedError`.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Earlier history
|
|
29
|
+
|
|
30
|
+
### 1.1.0 (first release since 1.0.11 on PyPI)
|
|
31
|
+
|
|
32
|
+
*Fixes*
|
|
33
|
+
* Fixed `GeodesicDome(frequency=n)` for n > 1. Previously it recorded frequency n² and building faces failed.
|
|
34
|
+
* Fixed seam linking along one edge of the net (v6–v7 / v10–v7). 2(f−1) vertices there returned only
|
|
35
|
+
4 of their 6 neighbours. Neighbour rings now match graph distance on the sphere for every vertex.
|
|
36
|
+
* `latlon_coord` is now stored as float (it was truncated to integers).
|
|
37
|
+
* `util.facing` no longer uses `np.cross` on 2D vectors, which is deprecated in NumPy 2.
|
|
38
|
+
* Removed debug `print`s from `split()`.
|
|
39
|
+
|
|
40
|
+
*New*
|
|
41
|
+
* Subpackage `interactive`: `ProjectionViewer` (drag to rotate the sphere in a map projection),
|
|
42
|
+
`SphereMap` (seam- and pole-correct projection of a rotated mesh), `unique_mesh` and rotation helpers.
|
|
43
|
+
* `Projection` gained vectorised `latlong_to_2d`, `xyz_to_2d_many` and `outline`. Existing methods are unchanged.
|
|
44
|
+
* `GeodesicDome.__repr__` and `__version__`.
|
|
45
|
+
* The `examples/` folder, this README, a test suite, and `setup_env.sh` for a complete development
|
|
46
|
+
environment.
|
|
47
|
+
|
|
48
|
+
*Packaging*
|
|
49
|
+
* Licensed under **AGPL-3.0-or-later** with an attribution term (see the [README](https://github.com/takatsuka/mtGeodesicDome#8-licence)).
|
|
50
|
+
* Built from `pyproject.toml`, which replaces `setup.py`. Correct requirements: Python ≥ 3.10 and NumPy,
|
|
51
|
+
plus optional extras.
|
|
52
|
+
* Test scripts are no longer shipped in the wheel.
|
|
53
|
+
|
|
54
|
+
### 1.0.7 – 1.0.11 (2024): earlier releases.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: >-
|
|
3
|
+
If you use this software, please cite the publication below
|
|
4
|
+
(preferred-citation) and, where appropriate, the software itself.
|
|
5
|
+
title: "mtGeodesicDome: geodesic domes for Python"
|
|
6
|
+
type: software
|
|
7
|
+
authors:
|
|
8
|
+
- family-names: Takatsuka
|
|
9
|
+
given-names: Masahiro
|
|
10
|
+
email: masa@takatsuka.org
|
|
11
|
+
version: 1.2.0
|
|
12
|
+
date-released: "2026-09-28"
|
|
13
|
+
license: AGPL-3.0-or-later
|
|
14
|
+
repository-code: "https://github.com/takatsuka/mtGeodesicDome"
|
|
15
|
+
url: "https://pypi.org/project/mtgeodesicdome/"
|
|
16
|
+
keywords:
|
|
17
|
+
- geodesic dome
|
|
18
|
+
- icosahedral grid
|
|
19
|
+
- spherical self-organizing map
|
|
20
|
+
preferred-citation:
|
|
21
|
+
type: article
|
|
22
|
+
authors:
|
|
23
|
+
- family-names: Wu
|
|
24
|
+
given-names: Yingxin
|
|
25
|
+
- family-names: Takatsuka
|
|
26
|
+
given-names: Masahiro
|
|
27
|
+
title: "Spherical self-organizing map using efficient indexed geodesic data structure"
|
|
28
|
+
journal: "Neural Networks"
|
|
29
|
+
volume: 19
|
|
30
|
+
issue: "6-7"
|
|
31
|
+
start: 900
|
|
32
|
+
end: 910
|
|
33
|
+
year: 2006
|
|
34
|
+
month: 7
|
|
35
|
+
doi: "10.1016/j.neunet.2006.05.021"
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Contributing to mtGeodesicDome
|
|
2
|
+
|
|
3
|
+
Thank you for considering a contribution! Bug reports, questions and pull requests are welcome on
|
|
4
|
+
[GitHub](https://github.com/takatsuka/mtGeodesicDome/issues).
|
|
5
|
+
|
|
6
|
+
## Development set-up
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
python -m venv .venv && source .venv/bin/activate
|
|
10
|
+
pip install -e ".[dev]" # editable install with test and lint tools
|
|
11
|
+
pytest # runs the test suite
|
|
12
|
+
ruff check . && ruff format . # lint and format
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Please add or update tests in `tests/`, add a line to `CHANGELOG.md` under *Unreleased*, and keep
|
|
16
|
+
the `SPDX-License-Identifier` and copyright header at the top of every source file.
|
|
17
|
+
|
|
18
|
+
## Licence of contributions (please read)
|
|
19
|
+
|
|
20
|
+
mtGeodesicDome is published under the GNU Affero GPL v3 or later (AGPL-3.0-or-later), with an additional attribution term (see
|
|
21
|
+
`LICENSE` and `NOTICE`). The copyright holder, Masahiro Takatsuka, also offers the software under other
|
|
22
|
+
licences, including commercial ones. To keep that possible, contributions are accepted only on the
|
|
23
|
+
following terms.
|
|
24
|
+
|
|
25
|
+
By submitting a contribution (a pull request, patch, or other material) you confirm that:
|
|
26
|
+
|
|
27
|
+
1. **You have the right to submit it.** The contribution is your original work, or you otherwise have the
|
|
28
|
+
right to submit it under these terms. If your employer has rights to your work, you have its permission.
|
|
29
|
+
2. **You keep your copyright,** and license the contribution to the public under the GNU AGPL v3 or later,
|
|
30
|
+
like the rest of the project.
|
|
31
|
+
3. **You also grant a broader licence to Masahiro Takatsuka.** This is a perpetual, worldwide,
|
|
32
|
+
non-exclusive, royalty-free, irrevocable licence, including under any patent claims you can license that
|
|
33
|
+
the contribution necessarily infringes. It covers using, reproducing, modifying, distributing and
|
|
34
|
+
sublicensing the contribution, and licensing it under any other terms, including proprietary or
|
|
35
|
+
commercial ones, alone or as part of mtGeodesicDome or any other work.
|
|
36
|
+
4. **You are not owed any payment or support,** and the contribution is provided "as is", without
|
|
37
|
+
warranty.
|
|
38
|
+
|
|
39
|
+
Please state in your pull request: *"I agree to the licence terms in CONTRIBUTING.md."* Pull requests
|
|
40
|
+
without that statement cannot be merged.
|