SpiralMap 0.0.22__tar.gz → 0.16__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.
- {spiralmap-0.0.22 → spiralmap-0.16}/PKG-INFO +15 -6
- {spiralmap-0.0.22 → spiralmap-0.16}/README.md +7 -5
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/source/citation.rst +1 -1
- spiralmap-0.0.22/docs/build/html/_sources/index.rst.txt → spiralmap-0.16/docs/source/index.rst +1 -1
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/source/models_available.rst +11 -1
- spiralmap-0.16/paper/figures/residuals_polar_0.png +0 -0
- spiralmap-0.16/paper/figures/residuals_polar_3.png +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/paper/paper.bib +16 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/paper/paper.md +33 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/pyproject.toml +13 -2
- spiralmap-0.16/src/SpiralMap/datafiles/flim.pkl +0 -0
- spiralmap-0.16/src/SpiralMap/datafiles/flim_all.pkl +0 -0
- spiralmap-0.16/src/SpiralMap/figdir_primer/map_0png.png +0 -0
- spiralmap-0.16/src/SpiralMap/figdir_primer/map_1png.png +0 -0
- spiralmap-0.16/src/SpiralMap/figdir_primer/map_2png.png +0 -0
- spiralmap-0.16/src/SpiralMap/figdir_primer/map_3png.png +0 -0
- spiralmap-0.16/src/SpiralMap/figdir_primer/map_4png.png +0 -0
- spiralmap-0.16/src/SpiralMap/figdir_primer/map_5png.png +0 -0
- spiralmap-0.16/src/SpiralMap/figdir_primer/map_6png.png +0 -0
- spiralmap-0.16/src/SpiralMap/figdir_primer/map_9png.png +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/models_.py +234 -34
- spiralmap-0.16/src/SpiralMap/movie_.gif +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/mytools.py +1 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/test.py +86 -8
- spiralmap-0.0.22/docs/build/doctrees/api.doctree +0 -0
- spiralmap-0.0.22/docs/build/doctrees/environment.pickle +0 -0
- spiralmap-0.0.22/docs/build/doctrees/index.doctree +0 -0
- spiralmap-0.0.22/docs/build/doctrees/install.doctree +0 -0
- spiralmap-0.0.22/docs/build/html/.buildinfo +0 -4
- spiralmap-0.0.22/docs/build/html/_images/movie_.gif +0 -0
- spiralmap-0.0.22/docs/build/html/_modules/SpiralMap/models_.html +0 -1448
- spiralmap-0.0.22/docs/build/html/_modules/index.html +0 -112
- spiralmap-0.0.22/docs/build/html/_sources/api.rst.txt +0 -8
- spiralmap-0.0.22/docs/build/html/_sources/install.rst.txt +0 -25
- spiralmap-0.0.22/docs/build/html/_static/documentation_options.js +0 -13
- spiralmap-0.0.22/docs/build/html/api.html +0 -701
- spiralmap-0.0.22/docs/build/html/citation.html +0 -256
- spiralmap-0.0.22/docs/build/html/genindex.html +0 -287
- spiralmap-0.0.22/docs/build/html/index.html +0 -170
- spiralmap-0.0.22/docs/build/html/install.html +0 -129
- spiralmap-0.0.22/docs/build/html/models_available.html +0 -240
- spiralmap-0.0.22/docs/build/html/objects.inv +0 -0
- spiralmap-0.0.22/docs/build/html/py-modindex.html +0 -136
- spiralmap-0.0.22/docs/build/html/search.html +0 -131
- spiralmap-0.0.22/docs/build/html/searchindex.js +0 -1
- spiralmap-0.0.22/docs/doctrees/citation.doctree +0 -0
- spiralmap-0.0.22/docs/doctrees/models_available.doctree +0 -0
- spiralmap-0.0.22/docs/html/_sources/citation.rst.txt +0 -154
- spiralmap-0.0.22/docs/html/_sources/models_available.rst.txt +0 -81
- spiralmap-0.0.22/docs/html/_static/_sphinx_javascript_frameworks_compat.js +0 -123
- spiralmap-0.0.22/docs/html/_static/basic.css +0 -925
- spiralmap-0.0.22/docs/html/_static/css/badge_only.css +0 -1
- spiralmap-0.0.22/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/fontawesome-webfont.svg +0 -2671
- spiralmap-0.0.22/docs/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/lato-bold.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/lato-bold.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/lato-normal.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/css/fonts/lato-normal.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/css/theme.css +0 -4
- spiralmap-0.0.22/docs/html/_static/doctools.js +0 -156
- spiralmap-0.0.22/docs/html/_static/file.png +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-bold.eot +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-bold.ttf +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-bold.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-italic.eot +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-italic.ttf +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-italic.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-regular.eot +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-regular.ttf +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-regular.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- spiralmap-0.0.22/docs/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- spiralmap-0.0.22/docs/html/_static/jquery.js +0 -2
- spiralmap-0.0.22/docs/html/_static/js/badge_only.js +0 -1
- spiralmap-0.0.22/docs/html/_static/js/theme.js +0 -1
- spiralmap-0.0.22/docs/html/_static/js/versions.js +0 -228
- spiralmap-0.0.22/docs/html/_static/language_data.js +0 -199
- spiralmap-0.0.22/docs/html/_static/minus.png +0 -0
- spiralmap-0.0.22/docs/html/_static/plus.png +0 -0
- spiralmap-0.0.22/docs/html/_static/pygments.css +0 -74
- spiralmap-0.0.22/docs/html/_static/searchtools.js +0 -619
- spiralmap-0.0.22/docs/html/_static/sphinx_highlight.js +0 -154
- spiralmap-0.0.22/docs/source/index.rst +0 -40
- spiralmap-0.0.22/src/SpiralMap/datafiles/flim.pkl +0 -0
- spiralmap-0.0.22/src/SpiralMap/datafiles/flim_all.pkl +0 -0
- spiralmap-0.0.22/src/SpiralMap/figdir_primer/map_0png.png +0 -0
- spiralmap-0.0.22/src/SpiralMap/figdir_primer/map_1png.png +0 -0
- spiralmap-0.0.22/src/SpiralMap/figdir_primer/map_2png.png +0 -0
- spiralmap-0.0.22/src/SpiralMap/figdir_primer/map_3png.png +0 -0
- spiralmap-0.0.22/src/SpiralMap/figdir_primer/map_4png.png +0 -0
- spiralmap-0.0.22/src/SpiralMap/figdir_primer/map_5png.png +0 -0
- spiralmap-0.0.22/src/SpiralMap/figdir_primer/map_8png.png +0 -0
- spiralmap-0.0.22/src/SpiralMap/movie_.gif +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/.README.md.swp +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/.github/workflows/JOSS_paper.yml +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/.gitignore +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/.ipynb_checkpoints/demo-checkpoint.ipynb +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/.ipynb_checkpoints/demo_spiralmap-checkpoint.ipynb +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/.ipynb_checkpoints/dtools-checkpoint.py +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/.ipynb_checkpoints/plotspirals_demo-checkpoint.ipynb +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/.ipynb_checkpoints/test-checkpoint.py +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/.readthedocs.yaml +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/LICENSE.md +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/Makefile +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/demo_spiralmap.ipynb +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/Makefile +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/doctrees/api.doctree +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/doctrees/citation.doctree +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/doctrees/environment.pickle +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/doctrees/index.doctree +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/doctrees/install.doctree +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/doctrees/models_available.doctree +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/doctrees/modules.doctree +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/.buildinfo +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/_images/movie_.gif +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/_sources/api.rst.txt +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_sources/citation.rst.txt +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/_sources/index.rst.txt +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/_sources/install.rst.txt +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_sources/models_available.rst.txt +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/_sources/modules.rst.txt +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/basic.css +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/badge_only.css +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/lato-bold.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/lato-bold.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/lato-normal.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/fonts/lato-normal.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/css/theme.css +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/doctools.js +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/_static/documentation_options.js +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/file.png +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-bold.eot +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-bold.ttf +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-bold.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-italic.eot +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-italic.ttf +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-italic.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-regular.eot +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-regular.ttf +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-regular.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/jquery.js +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/js/badge_only.js +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/js/theme.js +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/js/versions.js +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/language_data.js +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/minus.png +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/plus.png +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/pygments.css +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/searchtools.js +0 -0
- {spiralmap-0.0.22/docs/build → spiralmap-0.16/docs}/html/_static/sphinx_highlight.js +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/api.html +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/citation.html +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/genindex.html +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/index.html +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/install.html +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/models_available.html +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/modules.html +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/objects.inv +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/search.html +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/html/searchindex.js +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/make.bat +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/source/api.rst +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/source/conf.py +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/source/install.rst +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/docs/source/requirements.txt +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/make.bat +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/paper/figures/all_arms_single_model.png +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/paper/figures/multiple_models_cartesian.png +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/paper/figures/multiple_models_polar.png +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/paper/figures/single_arm_single_model.png +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/paper/figures/single_model_polar.png +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/__init__.py +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel2024_cepheids/ArmAttributes_dyoungW1_bw025.pkl +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel_NIR/Drimmel2armspiral.fits +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel_NIR/Readme_spiral_m2_147.txt +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel_NIR/phase_shifted/Arm1_X_hel.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel_NIR/phase_shifted/Arm1_Y_hel.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel_NIR/phase_shifted/Arm2_X_hel.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel_NIR/phase_shifted/Arm2_Y_hel.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel_NIR/phase_shifted/Arm3_X_hel.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel_NIR/phase_shifted/Arm3_Y_hel.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel_NIR/phase_shifted/Arm4_X_hel.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel_NIR/phase_shifted/Arm4_Y_hel.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Drimmel_NIR/spiral_m2_147.dat +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/GaiaPVP_cont_2022/GaiaPVP_cont_2022_pproj_contours.pkl +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/GaiaPVP_cont_2022/over_dens_grid_threshold_0_003_dens.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/GaiaPVP_cont_2022/xvalues_dens.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/GaiaPVP_cont_2022/yvalues_dens.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Poggio_cont_2021/Poggio_cont_2021_pproj_contours.pkl +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Poggio_cont_2021/overdens_grid_locscale03.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Poggio_cont_2021/xvalues.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/Poggio_cont_2021/yvalues.npy +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/datafiles/spiral.bib +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/src/SpiralMap/version.py +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/tempfig/all_arms_single_model.pdf +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/tempfig/multiple_models_cartesian.pdf +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/tempfig/multiple_models_polar.pdf +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/tempfig/single_arm_single_model.pdf +0 -0
- {spiralmap-0.0.22 → spiralmap-0.16}/tempfig/single_model_polar.pdf +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: SpiralMap
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.16
|
|
4
4
|
Summary: Python Library of Milky Way's Spiral Arms
|
|
5
5
|
Project-URL: Homepage, https://github.com/Abhaypru/SpiralMap
|
|
6
6
|
Project-URL: Issues, https://github.com/Abhaypru/SpiralMap/issues
|
|
@@ -10,6 +10,13 @@ License-File: LICENSE.md
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Requires-Python: >=3.9
|
|
13
|
+
Requires-Dist: astropy
|
|
14
|
+
Requires-Dist: matplotlib
|
|
15
|
+
Requires-Dist: numpy
|
|
16
|
+
Requires-Dist: pandas
|
|
17
|
+
Requires-Dist: scipy
|
|
18
|
+
Requires-Dist: tabulate
|
|
19
|
+
Requires-Dist: update-checker
|
|
13
20
|
Provides-Extra: docs
|
|
14
21
|
Requires-Dist: sphinx; extra == 'docs'
|
|
15
22
|
Requires-Dist: sphinx-rtd-theme; extra == 'docs'
|
|
@@ -24,16 +31,18 @@ A Python library of the Milky Way's spiral arms.
|
|
|
24
31
|
|
|
25
32
|
The detailed documentation is hosted on [Read the docs](https://spiralmap.readthedocs.io/en/latest/#api-docs).
|
|
26
33
|
|
|
27
|
-
For a quickstart please refer to the accompanying [Jupyter notebook](https://github.com/Abhaypru/SpiralMap/blob/main/demo_spiralmap.ipynb)
|
|
34
|
+
For a quickstart please refer to the accompanying [Jupyter notebook](https://github.com/Abhaypru/SpiralMap/blob/main/demo_spiralmap.ipynb).
|
|
28
35
|
|
|
36
|
+
Read the preprint at [arxiv](https://www.arxiv.org/abs/2506.11383).
|
|
29
37
|
## Features
|
|
30
|
-
+ Access
|
|
38
|
+
+ Access 9 independent spiral arm models from literature. We are open to requests for including other spiral arm models.
|
|
31
39
|
+ Extract the 2D trace of individual or all spiral arms from a particular model.
|
|
32
40
|
+ Directly overplot spiral arms with choice of Cartesian or Polar coordinates, and in Heliocentric or Galactocentric frames.
|
|
33
41
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
## Updates
|
|
43
|
+
+ Missing Local arm (logarithmic) added to Hou-Han 2014 model.
|
|
44
|
+
+ Vallee 1995 model included.
|
|
45
|
+
+ Dependencies included
|
|
37
46
|
|
|
38
47
|
Installation
|
|
39
48
|
-------------
|
|
@@ -6,16 +6,18 @@ A Python library of the Milky Way's spiral arms.
|
|
|
6
6
|
|
|
7
7
|
The detailed documentation is hosted on [Read the docs](https://spiralmap.readthedocs.io/en/latest/#api-docs).
|
|
8
8
|
|
|
9
|
-
For a quickstart please refer to the accompanying [Jupyter notebook](https://github.com/Abhaypru/SpiralMap/blob/main/demo_spiralmap.ipynb)
|
|
9
|
+
For a quickstart please refer to the accompanying [Jupyter notebook](https://github.com/Abhaypru/SpiralMap/blob/main/demo_spiralmap.ipynb).
|
|
10
10
|
|
|
11
|
+
Read the preprint at [arxiv](https://www.arxiv.org/abs/2506.11383).
|
|
11
12
|
## Features
|
|
12
|
-
+ Access
|
|
13
|
+
+ Access 9 independent spiral arm models from literature. We are open to requests for including other spiral arm models.
|
|
13
14
|
+ Extract the 2D trace of individual or all spiral arms from a particular model.
|
|
14
15
|
+ Directly overplot spiral arms with choice of Cartesian or Polar coordinates, and in Heliocentric or Galactocentric frames.
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
## Updates
|
|
18
|
+
+ Missing Local arm (logarithmic) added to Hou-Han 2014 model.
|
|
19
|
+
+ Vallee 1995 model included.
|
|
20
|
+
+ Dependencies included
|
|
19
21
|
|
|
20
22
|
Installation
|
|
21
23
|
-------------
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
How to Cite
|
|
2
2
|
===========
|
|
3
3
|
|
|
4
|
-
If you use **SpiralMap**, please cite the accompanying paper
|
|
4
|
+
If you use **SpiralMap**, please cite the accompanying paper `Prusty & Khanna <https://arxiv.org/abs/2506.11383>`_.
|
|
5
5
|
|
|
6
6
|
Pleae also cite the particular models used, we provide below the references in BibTeX format.
|
|
7
7
|
|
spiralmap-0.0.22/docs/build/html/_sources/index.rst.txt → spiralmap-0.16/docs/source/index.rst
RENAMED
|
@@ -12,7 +12,7 @@ We present a Python library of the Milky Way's major spiral arm models and maps.
|
|
|
12
12
|
Most users are interested in simply extracting the trace or overplotting the spiral arms on another plot of interest, for example while comparing substructure in the velocity field to the location of spiral arms.
|
|
13
13
|
To this end, with `SpiralMap` one can:
|
|
14
14
|
|
|
15
|
-
+ Access
|
|
15
|
+
+ Access 9 independent spiral arm models from literature. List of the available models is :doc:`here </models_available>`.
|
|
16
16
|
+ Extract the trace of individual or all spiral arms from a particular model.
|
|
17
17
|
+ Directly overplot spiral arms with choice of Cartesian or Polar coordinates, and in Heliocentric or Galactocentric frames.
|
|
18
18
|
|
|
@@ -9,6 +9,8 @@ The following table provides a summary of the spiral arm models included in **Sp
|
|
|
9
9
|
+========================+==============================================+
|
|
10
10
|
| Taylor_Cordes_1992 | Model based on HII regions |
|
|
11
11
|
+------------------------+----------------------------------------------+
|
|
12
|
+
| Vallee_1995 | Based on Galactic magnetic field/Dust/stars |
|
|
13
|
+
+------------------------+----------------------------------------------+
|
|
12
14
|
| Drimmel_NIR_2000 | Based on Galactic plane emission in N |
|
|
13
15
|
+------------------------+----------------------------------------------+
|
|
14
16
|
| Levine_2006 | Based on HI (21 cm) data |
|
|
@@ -33,6 +35,13 @@ The following table provides a summary of the spiral arm models included in **Sp
|
|
|
33
35
|
* We use the model parameters presented in their Table 1.
|
|
34
36
|
* There are four arms in this model (Arm1, Arm2, Arm3, Arm4).
|
|
35
37
|
|
|
38
|
+
`Vallee_1995`
|
|
39
|
+
-----------------
|
|
40
|
+
* Class implementing the model from `Vallee 1995 <https://ui.adsabs.harvard.edu/abs/1995ApJ...454..119V/abstract>`_
|
|
41
|
+
which is based on Galactic magnetic field data, HI, HII, CO, and Dust.
|
|
42
|
+
* We use their best model as depicted in their figure 3.
|
|
43
|
+
* There are four arms in this model (Sagittarius, Scutum, Norma, Perseus).
|
|
44
|
+
|
|
36
45
|
`Drimmel_NIR_2000`
|
|
37
46
|
-----------------
|
|
38
47
|
* Class implementing the model from `Drimmel 2000 <https://iopscience.iop.org/article/10.1086/321556>`_, which is based on Galactic plane emission profiles in the K band using COBE data.
|
|
@@ -50,7 +59,8 @@ The following table provides a summary of the spiral arm models included in **Sp
|
|
|
50
59
|
* Class built upon the polynomial-logarithmic formulation introduced by `Hou et al. 2014 <https://ui.adsabs.harvard.edu/abs/2014A%26A...569A.125H/abstract>`_, based on a combination of
|
|
51
60
|
H II, giant molecular clouds, and methanol MASER catalogs.
|
|
52
61
|
* Model publicly available.
|
|
53
|
-
* There are six arms in this model (
|
|
62
|
+
* There are six arms in this model (Arm1, Arm2, Arm3, Arm4, Arm5, Arm6).
|
|
63
|
+
* Additionally their local arm is included as a regular logarithmic spiral.
|
|
54
64
|
|
|
55
65
|
`Reid_2019`
|
|
56
66
|
---------
|
|
Binary file
|
|
Binary file
|
|
@@ -246,3 +246,19 @@ archivePrefix = {arXiv},
|
|
|
246
246
|
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
+
@ARTICLE{khanna2024,
|
|
250
|
+
author = {{Khanna}, Shourya and {Yu}, Jie and {Drimmel}, Ronald and {Poggio}, Eloisa and {Cantat-Gaudin}, Tristan and {Castro-Ginard}, Alfred and {Kurbatov}, Evgeny and {Belokurov}, Vasily and {Brown}, Anthony and {Fouesneau}, Morgan and {Casey}, Andrew and {Rix}, Hans-Walter},
|
|
251
|
+
title = "{GaiaUnlimited: The old stellar disc of the Milky Way as traced by the Red Clump}",
|
|
252
|
+
journal = {arXiv e-prints},
|
|
253
|
+
keywords = {Astrophysics - Astrophysics of Galaxies},
|
|
254
|
+
year = 2024,
|
|
255
|
+
month = oct,
|
|
256
|
+
eid = {arXiv:2410.22036},
|
|
257
|
+
pages = {arXiv:2410.22036},
|
|
258
|
+
doi = {10.48550/arXiv.2410.22036},
|
|
259
|
+
archivePrefix = {arXiv},
|
|
260
|
+
eprint = {2410.22036},
|
|
261
|
+
primaryClass = {astro-ph.GA},
|
|
262
|
+
adsurl = {https://ui.adsabs.harvard.edu/abs/2024arXiv241022036K},
|
|
263
|
+
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
|
|
264
|
+
}
|
|
@@ -55,6 +55,39 @@ a) Documentation: [`readthedocs`](https://spiralmap.readthedocs.io/en/latest/),
|
|
|
55
55
|

|
|
56
56
|
|
|
57
57
|
|
|
58
|
+
# Example Scientific application
|
|
59
|
+
As an example of a science case, we reproduce figures from @khanna2024 (hereafter K24) where `SpiralMap` was used.
|
|
60
|
+
In particular, K24 constructed a model for the stellar density distribution in Red Clump stars in the Milky Way, and then compared the residuals of their best-fit models
|
|
61
|
+
with the locations of non-axisymmetric structures such as spiral arms. The figures below show two of their residual plots overlaid with spiral models
|
|
62
|
+
( `Drimmel_NIR_2000`, `Drimmel_Ceph_2024`, & `Reid_2019`) using `SpiralMap`.
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+

|
|
66
|
+
|
|
67
|
+
|
|
68
|
+

|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
A very basic example of using `SpiralMap` is shown below, where we access all information about one particular arm ( `Sag-Car`) in one particular model `Drimmel_Ceph_2024`,
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
##################################################
|
|
75
|
+
##### Readout a single arm from a single model ###
|
|
76
|
+
##################################################
|
|
77
|
+
import SpiralMap as sp
|
|
78
|
+
from SpiralMap import polar_style
|
|
79
|
+
|
|
80
|
+
Rsun=8.277
|
|
81
|
+
spirals = sp.main_(Rsun=Rsun)
|
|
82
|
+
use_model = `Drimmel_Ceph_2024'
|
|
83
|
+
spirals.getinfo(model=use_model)
|
|
84
|
+
plotattrs = {`plot':False}
|
|
85
|
+
spirals.readout(plotattrs,model=use_model,arm=`Sag-Car')
|
|
86
|
+
|
|
87
|
+
##################################################
|
|
88
|
+
|
|
89
|
+
More common examples are shown in the accompanying [`Jupyter notebook`](https://github.com/Abhaypru/SpiralMap/blob/main/demo_spiralmap.ipynb).
|
|
90
|
+
|
|
58
91
|
|
|
59
92
|
# Availability
|
|
60
93
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "SpiralMap"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.16"
|
|
8
8
|
authors = [
|
|
9
9
|
{ name="Prusty & Khanna", email="shourya.khanna@inaf.it" },
|
|
10
10
|
]
|
|
@@ -18,9 +18,20 @@ classifiers = [
|
|
|
18
18
|
license = "MIT"
|
|
19
19
|
license-files = ["LICEN[CS]E*"]
|
|
20
20
|
|
|
21
|
+
# This MUST be inside the [project] section
|
|
22
|
+
dependencies = [
|
|
23
|
+
"astropy",
|
|
24
|
+
"matplotlib",
|
|
25
|
+
"numpy",
|
|
26
|
+
"scipy",
|
|
27
|
+
"tabulate",
|
|
28
|
+
"update-checker",
|
|
29
|
+
"pandas",
|
|
30
|
+
]
|
|
31
|
+
|
|
21
32
|
[project.optional-dependencies]
|
|
22
33
|
docs = ["sphinx","sphinx_rtd_theme", "sphinxcontrib-bibtex"]
|
|
23
34
|
|
|
24
35
|
[project.urls]
|
|
25
36
|
Homepage = "https://github.com/Abhaypru/SpiralMap"
|
|
26
|
-
Issues = "https://github.com/Abhaypru/SpiralMap/issues"
|
|
37
|
+
Issues = "https://github.com/Abhaypru/SpiralMap/issues"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -2,17 +2,23 @@
|
|
|
2
2
|
# SpiralMap: a library of the Milky Way's spiral arms
|
|
3
3
|
# History:
|
|
4
4
|
# May 2025: Prusty (IISER Kolkata) & Shourya Khanna (INAF Torino)
|
|
5
|
+
# Feb 2026: Following updates:
|
|
6
|
+
# 1) Missing Local arm (logarithmic) added to Hou-Han 2014 model.
|
|
7
|
+
# 2) Vallee 1995 model included.
|
|
8
|
+
# 3) added dependencies to .toml
|
|
5
9
|
#######################################################################
|
|
6
10
|
|
|
7
11
|
|
|
8
12
|
#--------------------------------------------
|
|
9
13
|
# import utilities package / set root
|
|
10
14
|
import os
|
|
15
|
+
import version
|
|
11
16
|
from os.path import dirname
|
|
17
|
+
from update_checker import update_check
|
|
12
18
|
root_ = dirname(__file__)
|
|
13
19
|
dataloc = root_+'/datafiles'
|
|
14
20
|
exec(open(root_+"/mytools.py").read())
|
|
15
|
-
|
|
21
|
+
update_check('spiralmap', version.__version__)
|
|
16
22
|
#--------------------------------------------
|
|
17
23
|
|
|
18
24
|
|
|
@@ -59,6 +65,7 @@ class spiral_poggio_maps(object):
|
|
|
59
65
|
func_ = lambda s: 'yval' in s
|
|
60
66
|
yval_file = list(filter(func_,flist1))[0]
|
|
61
67
|
|
|
68
|
+
|
|
62
69
|
# # read overdensity contours
|
|
63
70
|
xvalues_overdens=np.load(self.loc+'/'+xval_file)
|
|
64
71
|
yvalues_overdens=np.load(self.loc+'/'+yval_file)
|
|
@@ -67,6 +74,8 @@ class spiral_poggio_maps(object):
|
|
|
67
74
|
Rvalues_dens=sqrtsum(ds=[xvalues_overdens, yvalues_overdens])
|
|
68
75
|
Rgcvalues_dens=sqrtsum(ds=[xvalues_overdens+xsun, yvalues_overdens])
|
|
69
76
|
|
|
77
|
+
self.over_dens_grid = over_dens_grid
|
|
78
|
+
|
|
70
79
|
fl = pickleread(self.loc+'/'+self.model_+'_pproj_contours.pkl')
|
|
71
80
|
self.dout = {'xhc':xvalues_overdens,'yhc':yvalues_overdens,'xgc':xvalues_overdens+xsun,'ygc':yvalues_overdens}
|
|
72
81
|
self.dout['phi4'] =fl['phi4'].copy()
|
|
@@ -105,6 +114,177 @@ class spiral_poggio_maps(object):
|
|
|
105
114
|
plotattrs['linestyle'] = '.'
|
|
106
115
|
_polarproj(self,plotattrs)
|
|
107
116
|
|
|
117
|
+
|
|
118
|
+
class spiral_vallee(object):
|
|
119
|
+
"""
|
|
120
|
+
Vallee et al (1995) logarithmic spiral arm model for the Milky Way.
|
|
121
|
+
Based on multi-tracer analysis including magnetic fields, dust, gas, and stars.
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
def __init__(self):
|
|
125
|
+
self.getarmlist()
|
|
126
|
+
|
|
127
|
+
def getarmlist(self):
|
|
128
|
+
"""Set arm names """
|
|
129
|
+
self.arms = np.array(['Sagittarius', 'Scutum', '3-kpc', 'Perseus'])
|
|
130
|
+
self.armcolour = {
|
|
131
|
+
'Sagittarius': 'red', # red
|
|
132
|
+
'Perseus': 'orange', # orange
|
|
133
|
+
'Scutum': 'purple', #
|
|
134
|
+
'3-kpc': 'green' # brown
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
self.getparams()
|
|
138
|
+
self.armcolours = [self.armcolour[ky] for ky in self.arms]
|
|
139
|
+
|
|
140
|
+
def info(self):
|
|
141
|
+
d = {'Arm list': self.arms, 'Colour': self.armcolours}
|
|
142
|
+
dfmodlist = pd.DataFrame(d)
|
|
143
|
+
print(tabulate(dfmodlist, headers='keys', tablefmt='psql'))
|
|
144
|
+
|
|
145
|
+
def getparams(self):
|
|
146
|
+
"""
|
|
147
|
+
Return parameters for each arm.
|
|
148
|
+
|
|
149
|
+
Parameters from Vallee 1995:
|
|
150
|
+
- Pitch angle: 12° ± 1° (inward, absolute value used here)
|
|
151
|
+
- Number of arms: 4
|
|
152
|
+
- Arm start radius: 2.5 kpc
|
|
153
|
+
- Solar position: 8 kpc from Galactic center
|
|
154
|
+
- Arm separation: ~3 kpc near Sun
|
|
155
|
+
|
|
156
|
+
Note: phi0 is set to produce 4 equally spaced arms starting at 2.5 kpc
|
|
157
|
+
"""
|
|
158
|
+
|
|
159
|
+
self.arms_model = {
|
|
160
|
+
'Scutum': {'pitch': 12.5, 'phi0': 0, 'r0': 2.5},
|
|
161
|
+
'3-kpc': {'pitch': 12.5, 'phi0': 90, 'r0': 2.5},
|
|
162
|
+
'Perseus': {'pitch': 12.5, 'phi0': 180, 'r0': 2.5},
|
|
163
|
+
'Sagittarius': {'pitch': 12.5, 'phi0': 270, 'r0': 2.5}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
def model_(self, arm_name, R_max=13, n_points=1000):
|
|
167
|
+
"""Generate logarithmic spiral coordinates for specified arm.
|
|
168
|
+
|
|
169
|
+
Parameters
|
|
170
|
+
----------
|
|
171
|
+
arm_name : str
|
|
172
|
+
Name of arm to model
|
|
173
|
+
R_max : float, optional
|
|
174
|
+
Maximum galactocentric radius to model (kpc), default=13
|
|
175
|
+
(Vallee 1995 limits to r_gal < 13 kpc)
|
|
176
|
+
n_points : int, optional
|
|
177
|
+
Number of points to sample along the spiral, default=1000
|
|
178
|
+
|
|
179
|
+
Returns
|
|
180
|
+
-------
|
|
181
|
+
tuple
|
|
182
|
+
(x_hc, y_hc, x_gc, y_gc) coordinate arrays where:
|
|
183
|
+
- x_hc, y_hc: Heliocentric coordinates (kpc)
|
|
184
|
+
- x_gc, y_gc: Galactocentric coordinates (kpc)
|
|
185
|
+
|
|
186
|
+
Model limited to 3 kpc < r_gal < 13 kpc per Vallee 1995 constraints
|
|
187
|
+
"""
|
|
188
|
+
self.R0 = -self.xsun # 8.0 kpc
|
|
189
|
+
params = self.arms_model[arm_name]
|
|
190
|
+
pitch_rad = np.radians(params['pitch'])
|
|
191
|
+
phi0_rad = np.radians(params['phi0'])
|
|
192
|
+
r0 = params['r0']
|
|
193
|
+
|
|
194
|
+
# Calculate maximum phi to reach R_max, starting from r0
|
|
195
|
+
phi_max = phi0_rad + (np.log(R_max/r0) / np.tan(pitch_rad))
|
|
196
|
+
|
|
197
|
+
# Generate angular range starting from phi0
|
|
198
|
+
phi = np.linspace(phi0_rad, phi_max, n_points)
|
|
199
|
+
|
|
200
|
+
# Logarithmic spiral equation (Vallee 1995 eq. 5a)
|
|
201
|
+
R = r0 * np.exp((phi - phi0_rad) * np.tan(pitch_rad))
|
|
202
|
+
|
|
203
|
+
# Apply Vallee 1995 constraints: exclude r_gal < 3 kpc
|
|
204
|
+
mask = R >= 3.0
|
|
205
|
+
R = R[mask]
|
|
206
|
+
phi = phi[mask]
|
|
207
|
+
|
|
208
|
+
# Convert to Cartesian coordinates (Galactocentric)
|
|
209
|
+
x_gc = R * np.cos(phi)
|
|
210
|
+
y_gc = R * np.sin(phi)
|
|
211
|
+
|
|
212
|
+
# Convert to Heliocentric coordinates (Sun at x=8, y=0 in galactocentric)
|
|
213
|
+
# In heliocentric: x_hc = x_gc - (-8) = x_gc + 8, y_hc = y_gc - 0 = y_gc
|
|
214
|
+
x_hc = x_gc + self.R0
|
|
215
|
+
y_hc = y_gc # Sun at y=0 in galactocentric, so y_hc = y_gc
|
|
216
|
+
|
|
217
|
+
return x_hc, y_hc, x_gc, y_gc
|
|
218
|
+
|
|
219
|
+
def output_(self, arm):
|
|
220
|
+
"""Get arm coordinates
|
|
221
|
+
|
|
222
|
+
Parameters
|
|
223
|
+
----------
|
|
224
|
+
arm : str
|
|
225
|
+
Arm identifier (e.g., 'Sagittarius')
|
|
226
|
+
|
|
227
|
+
Returns
|
|
228
|
+
-------
|
|
229
|
+
dict
|
|
230
|
+
Dictionary with keys:
|
|
231
|
+
- 'xhc': Heliocentric x coordinates
|
|
232
|
+
- 'yhc': Heliocentric y coordinates
|
|
233
|
+
- 'xgc': Galactocentric x coordinates
|
|
234
|
+
- 'ygc': Galactocentric y coordinates
|
|
235
|
+
"""
|
|
236
|
+
|
|
237
|
+
xhc, yhc, xgc, ygc = self.model_(arm)
|
|
238
|
+
self.dout = {
|
|
239
|
+
'xhc': xhc,
|
|
240
|
+
'yhc': yhc,
|
|
241
|
+
'xgc': xgc,
|
|
242
|
+
'ygc': ygc
|
|
243
|
+
|
|
244
|
+
}
|
|
245
|
+
return self.dout
|
|
246
|
+
|
|
247
|
+
def df_plot(self, coord='GC', R_max=13):
|
|
248
|
+
rows = []
|
|
249
|
+
|
|
250
|
+
for arm in self.arms:
|
|
251
|
+
x_hc, y_hc, x_gc, y_gc = self.model_(arm, R_max)
|
|
252
|
+
|
|
253
|
+
if coord.upper() == 'GC':
|
|
254
|
+
x, y = x_gc, y_gc
|
|
255
|
+
else:
|
|
256
|
+
x, y = x_hc, y_hc
|
|
257
|
+
|
|
258
|
+
for xi, yi in zip(x, y):
|
|
259
|
+
rows.append([arm, xi, yi])
|
|
260
|
+
|
|
261
|
+
return pd.DataFrame(rows, columns=['arm', 'x', 'y'])
|
|
262
|
+
|
|
263
|
+
def plot(self, coord='GC', R_max=13):
|
|
264
|
+
df = self.df_plot(coord, R_max)
|
|
265
|
+
|
|
266
|
+
plt.figure(figsize=(6, 6))
|
|
267
|
+
|
|
268
|
+
for arm in self.arms:
|
|
269
|
+
d = df[df['arm'] == arm]
|
|
270
|
+
plt.plot(d['x'], d['y'], color=self.armcolour[arm], label=arm)
|
|
271
|
+
|
|
272
|
+
if coord.upper() == 'GC':
|
|
273
|
+
plt.plot(0, 0, 'r*', ms=12, label='GC')
|
|
274
|
+
plt.plot(-self.R0, 0, 'o', color='orange', label='Sun')
|
|
275
|
+
plt.xlabel('X_gc [kpc]')
|
|
276
|
+
plt.ylabel('Y_gc [kpc]')
|
|
277
|
+
else:
|
|
278
|
+
plt.plot(0, 0, 'o', color='orange', label='Sun')
|
|
279
|
+
plt.xlabel('X_hc [kpc]')
|
|
280
|
+
plt.ylabel('Y_hc [kpc]')
|
|
281
|
+
|
|
282
|
+
plt.axhline(0, ls='--', lw=0.5)
|
|
283
|
+
plt.axvline(0, ls='--', lw=0.5)
|
|
284
|
+
plt.axis('equal')
|
|
285
|
+
plt.legend()
|
|
286
|
+
plt.tight_layout()
|
|
287
|
+
plt.show()
|
|
108
288
|
|
|
109
289
|
class TaylorCordesSpiral(object):
|
|
110
290
|
"""
|
|
@@ -203,13 +383,15 @@ class spiral_houhan(object):
|
|
|
203
383
|
Implements the Milky Way spiral structure model from:
|
|
204
384
|
"The spiral structure of the Milky Way from classical Cepheids" (Hou & Han 2014)
|
|
205
385
|
using polynomial-logarithmic spiral functions. Provides 6 major arm segments.
|
|
386
|
+
Additionally, the local arm is implemented as a logarithmic spiral.
|
|
206
387
|
"""
|
|
207
388
|
def __init__(self):
|
|
208
389
|
self.getarmlist()
|
|
209
390
|
def getarmlist(self):
|
|
210
|
-
"""Set arm names and colours"""
|
|
211
|
-
self.arms = np.array(['
|
|
212
|
-
self.armcolour = {'
|
|
391
|
+
"""Set arm names and colours"""
|
|
392
|
+
self.arms = np.array(['Arm1','Arm2','Arm3','Arm4','Arm5','Arm6','local'])
|
|
393
|
+
self.armcolour = {'Arm1':'black','Arm2':'red','Arm3':'green','Arm4':'blue','Arm5':'purple','Arm6':'gold','local':'cyan'}
|
|
394
|
+
|
|
213
395
|
self.armcolours= [self.armcolour[ky] for ky in self.arms ]
|
|
214
396
|
def info(self):
|
|
215
397
|
d = {'Arm list': self.arms, 'Colour': self.armcolours}
|
|
@@ -218,25 +400,30 @@ class spiral_houhan(object):
|
|
|
218
400
|
|
|
219
401
|
def getparams(self):
|
|
220
402
|
"""
|
|
221
|
-
Load spiral parameters from Hou & Han (2014) Table 4 (vcirc=239, Z =0.
|
|
222
|
-
|
|
403
|
+
Load spiral parameters from Hou & Han (2014) Table 4 (vcirc=239, Z =0.17), all tracers.
|
|
404
|
+
|
|
223
405
|
:return: params ( Nested dictionary containing for each arm).
|
|
224
406
|
|
|
225
407
|
a, b, c, d: Polynomial coefficients.
|
|
226
408
|
|
|
227
409
|
θ_start: Start angle in degrees (Galactic longitude).
|
|
228
410
|
|
|
229
|
-
θ_end: End angle in degrees.
|
|
411
|
+
θ_end: End angle in degrees.
|
|
412
|
+
|
|
413
|
+
ri,thetai,psi,ymin,ymax: logarithmic spiral (local arm only)
|
|
230
414
|
:rtype: dict
|
|
231
415
|
"""
|
|
232
416
|
params = {
|
|
233
|
-
'
|
|
234
|
-
'
|
|
235
|
-
'
|
|
236
|
-
'
|
|
237
|
-
'
|
|
238
|
-
'
|
|
417
|
+
'Arm1': {'a': 1.1320, 'b': 0.1233, 'c': 0.003488, 'd': 0.0, 'θ_start': 40, 'θ_end': 250},
|
|
418
|
+
'Arm2': {'a': 5.8243, 'b': -1.8196, 'c': 0.2350, 'd': -0.009011, 'θ_start': 275, 'θ_end': 620},
|
|
419
|
+
'Arm3': {'a': 4.2767, 'b': -1.1507, 'c': 0.1570, 'd': -0.006078, 'θ_start': 275, 'θ_end': 575},
|
|
420
|
+
'Arm4': {'a': 1.1280, 'b': 0.1282, 'c': 0.002617, 'd': 0.0, 'θ_start': 280, 'θ_end': 500},
|
|
421
|
+
'Arm5': {'a': 1.7978, 'b': -0.04738, 'c': 0.01684, 'd': 0.0, 'θ_start': 280, 'θ_end': 500},
|
|
422
|
+
'Arm6': {'a': 2.4225, 'b': -0.1636, 'c': 0.02494, 'd': 0.0, 'θ_start': 280, 'θ_end': 405},
|
|
423
|
+
'local': {'ri': 8.17, 'thetai': 57.8, 'psi':2.84,'ymin':-4.,'ymax':7.5}
|
|
239
424
|
}
|
|
425
|
+
|
|
426
|
+
|
|
240
427
|
return params
|
|
241
428
|
def polynomial_log_spiral(self, θ, a, b, c, d):
|
|
242
429
|
"""Calculate radius using polynomial-logarithmic spiral equation.
|
|
@@ -264,19 +451,31 @@ class spiral_houhan(object):
|
|
|
264
451
|
def model_(self, arm_name, n_points=500):
|
|
265
452
|
|
|
266
453
|
params_ = self.getparams()
|
|
267
|
-
params = params_[arm_name]
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
454
|
+
params = params_[arm_name]
|
|
455
|
+
|
|
456
|
+
if arm_name == 'local':
|
|
457
|
+
θ = np.linspace(0., 180., n_points)
|
|
458
|
+
tmp1 = np.radians(θ - params['thetai'])
|
|
459
|
+
tmp2 = np.tan(np.radians(params['psi']))
|
|
460
|
+
R = params['ri']*np.exp( tmp1*tmp2 )
|
|
461
|
+
else:
|
|
462
|
+
θ = np.linspace(params['θ_start'], params['θ_end'], n_points)
|
|
463
|
+
R = self.polynomial_log_spiral(θ, params['a'], params['b'], params['c'], params['d'])
|
|
464
|
+
|
|
273
465
|
# Convert to Cartesian coordinates (Galactocentric)
|
|
274
466
|
y_gc = R*np.cos(np.radians(θ))
|
|
275
467
|
x_gc = -R * np.sin(np.radians(θ))
|
|
276
468
|
|
|
277
469
|
# Convert to Heliocentric coordinates
|
|
278
470
|
x_hc = (x_gc + self.R0)
|
|
279
|
-
|
|
471
|
+
|
|
472
|
+
if arm_name == 'local':
|
|
473
|
+
ind_mask = np.where((y_gc < params['ymin'])|(y_gc > params['ymax']))[0]
|
|
474
|
+
y_gc[ind_mask] = np.nan
|
|
475
|
+
x_gc[ind_mask] = np.nan
|
|
476
|
+
x_hc[ind_mask] = np.nan
|
|
477
|
+
|
|
478
|
+
|
|
280
479
|
return x_hc, y_gc, x_gc, y_gc
|
|
281
480
|
|
|
282
481
|
def output_(self, arm):
|
|
@@ -311,9 +510,9 @@ class spiral_houhan_HII(object):
|
|
|
311
510
|
def __init__(self):
|
|
312
511
|
self.getarmlist()
|
|
313
512
|
def getarmlist(self):
|
|
314
|
-
"""Set arm names and colours"""
|
|
315
|
-
self.arms = np.array(['
|
|
316
|
-
self.armcolour = {'
|
|
513
|
+
"""Set arm names and colours"""
|
|
514
|
+
self.arms = np.array(['Arm1','Arm2','Arm3','Arm4','Arm5','Arm6'])
|
|
515
|
+
self.armcolour = {'Arm1':'black','Arm2':'red','Arm3':'green','Arm4':'blue','Arm5':'purple','Arm6':'gold'}
|
|
317
516
|
self.armcolours= [self.armcolour[ky] for ky in self.arms ]
|
|
318
517
|
def info(self):
|
|
319
518
|
d = {'Arm list': self.arms, 'Colour': self.armcolours}
|
|
@@ -335,12 +534,12 @@ class spiral_houhan_HII(object):
|
|
|
335
534
|
"""
|
|
336
535
|
|
|
337
536
|
params = {
|
|
338
|
-
'
|
|
339
|
-
'
|
|
340
|
-
'
|
|
341
|
-
'
|
|
342
|
-
'
|
|
343
|
-
'
|
|
537
|
+
'Arm1': {'a': 1.1668, 'b': 0.1198, 'c': 0.002557, 'd': 0.0, 'θ_start': 40, 'θ_end': 250},
|
|
538
|
+
'Arm2': {'a': 5.8002, 'b': -1.8188, 'c': 0.2352, 'd': -0.008999, 'θ_start': 275, 'θ_end': 620},
|
|
539
|
+
'Arm3': {'a': 4.2300, 'b': -1.1505, 'c': 0.1561, 'd': -0.005898, 'θ_start': 275, 'θ_end': 570},
|
|
540
|
+
'Arm4': {'a': 0.9744, 'b': 0.1405, 'c': 0.003995, 'd': 0.0, 'θ_start': 280, 'θ_end': 500},
|
|
541
|
+
'Arm5': {'a': 0.9887, 'b': 0.1714, 'c': 0.004358, 'd': 0.0, 'θ_start': 280, 'θ_end': 475},
|
|
542
|
+
'Arm6': {'a': 3.3846, 'b': -0.6554, 'c': 0.08170, 'd': 0.0, 'θ_start': 280, 'θ_end': 355}
|
|
344
543
|
}
|
|
345
544
|
|
|
346
545
|
return params
|
|
@@ -925,7 +1124,7 @@ class main_(object):
|
|
|
925
1124
|
Constructs dictionaries to initialise individual model classes
|
|
926
1125
|
"""
|
|
927
1126
|
|
|
928
|
-
self.models = ['Taylor_Cordes_1992','Drimmel_NIR_2000',
|
|
1127
|
+
self.models = ['Taylor_Cordes_1992','Vallee_1995','Drimmel_NIR_2000',
|
|
929
1128
|
'Levine_2006','Hou_Han_2014','Hou_Han_HII_2014','Reid_2019',
|
|
930
1129
|
'Poggio_cont_2021','GaiaPVP_cont_2022','Drimmel_Ceph_2024']
|
|
931
1130
|
self.models_class = {'Reid_2019':reid_spiral(),
|
|
@@ -936,9 +1135,10 @@ class main_(object):
|
|
|
936
1135
|
'Taylor_Cordes_1992':TaylorCordesSpiral(),
|
|
937
1136
|
'Hou_Han_2014':spiral_houhan(),
|
|
938
1137
|
'Hou_Han_HII_2014':spiral_houhan_HII(),
|
|
1138
|
+
'Vallee_1995':spiral_vallee(),
|
|
939
1139
|
'Drimmel_Ceph_2024':spiral_drimmel_cepheids()}
|
|
940
1140
|
|
|
941
|
-
self.models_desc = ['HII','NIR emission',
|
|
1141
|
+
self.models_desc = ['HII','Bfield/Dust/gas','NIR emission',
|
|
942
1142
|
'HI','HII/GMC/Masers','HII','MASER parallax',
|
|
943
1143
|
'Upper main sequence (map)','OB stars (map)','Cepheids']
|
|
944
1144
|
def getinfo(self,model='',print_=True):
|
|
@@ -997,11 +1197,11 @@ class main_(object):
|
|
|
997
1197
|
if plotattrs_['plot'] and plotattrs_['polarproj']==False :
|
|
998
1198
|
plt.plot(spimod.dout['x'+plotattrs_['coordsys'].lower()],
|
|
999
1199
|
spimod.dout['y'+plotattrs_['coordsys'].lower()],
|
|
1000
|
-
plotattrs_['linestyle'],color=plotattrs_['armcolour'])
|
|
1200
|
+
plotattrs_['linestyle'],linewidth=plotattrs_['linewidth'],color=plotattrs_['armcolour'])
|
|
1001
1201
|
if 'xhc_ex' in spimod.dout.keys():
|
|
1002
1202
|
plt.plot(spimod.dout['x'+plotattrs_['coordsys'].lower()+'_ex'],
|
|
1003
1203
|
spimod.dout['y'+plotattrs_['coordsys'].lower()+'_ex'],
|
|
1004
|
-
'--',color=plotattrs_['armcolour'])
|
|
1204
|
+
'--',linewidth=plotattrs_['linewidth'],color=plotattrs_['armcolour'])
|
|
1005
1205
|
|
|
1006
1206
|
plt.xlabel('X$_{'+plotattrs_['coordsys']+'}$ [Kpc]')
|
|
1007
1207
|
plt.ylabel('Y$_{'+plotattrs_['coordsys']+'}$ [Kpc]')
|
|
@@ -1234,4 +1434,4 @@ class _make_supportfiles(object):
|
|
|
1234
1434
|
|
|
1235
1435
|
|
|
1236
1436
|
|
|
1237
|
-
#
|
|
1437
|
+
# _make_supportfiles()
|
|
Binary file
|