snappy 3.1.1__cp311-cp311-macosx_11_0_arm64.whl → 3.2__cp311-cp311-macosx_11_0_arm64.whl
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.
- snappy/CyOpenGL.cpython-311-darwin.so +0 -0
- snappy/SnapPy.cpython-311-darwin.so +0 -0
- snappy/SnapPyHP.cpython-311-darwin.so +0 -0
- snappy/__init__.py +299 -402
- snappy/app.py +70 -20
- snappy/browser.py +18 -17
- snappy/canonical.py +249 -0
- snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
- snappy/cusps/cusp_area_matrix.py +101 -0
- snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
- snappy/cusps/maximal_cusp_area_matrix.py +136 -0
- snappy/cusps/test.py +21 -0
- snappy/cusps/trig_cusp_area_matrix.py +63 -0
- snappy/database.py +10 -9
- snappy/decorated_isosig.py +337 -114
- snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
- snappy/dev/extended_ptolemy/extended.py +3 -3
- snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
- snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
- snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
- snappy/doc/_images/m125_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
- snappy/doc/_sources/development.rst.txt +66 -46
- snappy/doc/_sources/index.rst.txt +72 -5
- snappy/doc/_sources/installing.rst.txt +145 -162
- snappy/doc/_sources/news.rst.txt +73 -1
- snappy/doc/_sources/ptolemy_examples1.rst.txt +8 -7
- snappy/doc/_sources/ptolemy_examples3.rst.txt +2 -2
- snappy/doc/_sources/triangulation.rst.txt +2 -2
- snappy/doc/_sources/verify.rst.txt +89 -29
- snappy/doc/_sources/verify_internals.rst.txt +5 -16
- snappy/doc/_static/basic.css +23 -1
- snappy/doc/_static/css/badge_only.css +1 -1
- snappy/doc/_static/css/theme.css +1 -1
- snappy/doc/_static/doctools.js +1 -1
- snappy/doc/_static/documentation_options.js +2 -3
- snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- snappy/doc/_static/js/versions.js +228 -0
- snappy/doc/_static/language_data.js +2 -2
- snappy/doc/_static/pygments.css +1 -0
- snappy/doc/_static/searchtools.js +125 -71
- snappy/doc/_static/sphinx_highlight.js +13 -3
- snappy/doc/additional_classes.html +291 -122
- snappy/doc/bugs.html +17 -20
- snappy/doc/censuses.html +34 -53
- snappy/doc/credits.html +18 -21
- snappy/doc/development.html +88 -68
- snappy/doc/genindex.html +66 -145
- snappy/doc/index.html +86 -31
- snappy/doc/installing.html +164 -182
- snappy/doc/manifold.html +1168 -556
- snappy/doc/manifoldhp.html +18 -21
- snappy/doc/news.html +91 -33
- snappy/doc/objects.inv +0 -0
- snappy/doc/other.html +20 -22
- snappy/doc/platonic_census.html +31 -34
- snappy/doc/plink.html +19 -22
- snappy/doc/ptolemy.html +20 -22
- snappy/doc/ptolemy_classes.html +102 -105
- snappy/doc/ptolemy_examples1.html +34 -36
- snappy/doc/ptolemy_examples2.html +28 -31
- snappy/doc/ptolemy_examples3.html +26 -29
- snappy/doc/ptolemy_examples4.html +20 -23
- snappy/doc/ptolemy_prelim.html +25 -28
- snappy/doc/py-modindex.html +16 -19
- snappy/doc/screenshots.html +22 -24
- snappy/doc/search.html +15 -18
- snappy/doc/searchindex.js +1 -1
- snappy/doc/snap.html +18 -21
- snappy/doc/snappy.html +18 -20
- snappy/doc/spherogram.html +84 -87
- snappy/doc/todo.html +17 -20
- snappy/doc/triangulation.html +324 -215
- snappy/doc/tutorial.html +17 -20
- snappy/doc/verify.html +100 -46
- snappy/doc/verify_internals.html +106 -563
- snappy/drilling/__init__.py +153 -235
- snappy/drilling/barycentric.py +103 -0
- snappy/drilling/constants.py +0 -2
- snappy/drilling/crush.py +56 -130
- snappy/drilling/cusps.py +12 -6
- snappy/drilling/debug.py +2 -1
- snappy/drilling/exceptions.py +7 -40
- snappy/drilling/moves.py +302 -243
- snappy/drilling/perturb.py +63 -37
- snappy/drilling/shorten.py +36 -0
- snappy/drilling/subdivide.py +0 -5
- snappy/drilling/test.py +23 -0
- snappy/drilling/test_cases.py +126 -0
- snappy/drilling/tracing.py +9 -37
- snappy/exceptions.py +18 -5
- snappy/exterior_to_link/barycentric_geometry.py +2 -4
- snappy/exterior_to_link/main.py +8 -7
- snappy/exterior_to_link/mcomplex_with_link.py +2 -2
- snappy/exterior_to_link/rational_linear_algebra.py +1 -1
- snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
- snappy/exterior_to_link/test.py +21 -33
- snappy/geometric_structure/__init__.py +212 -0
- snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
- snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
- snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
- snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
- snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
- snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
- snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
- snappy/geometric_structure/geodesic/__init__.py +0 -0
- snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
- snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
- snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
- snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
- snappy/geometric_structure/geodesic/constants.py +6 -0
- snappy/geometric_structure/geodesic/exceptions.py +22 -0
- snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
- snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
- snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
- snappy/geometric_structure/geodesic/line.py +30 -0
- snappy/geometric_structure/geodesic/multiplicity.py +127 -0
- snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
- snappy/geometric_structure/test.py +22 -0
- snappy/gui.py +23 -13
- snappy/horoviewer.py +7 -7
- snappy/hyperboloid/__init__.py +96 -31
- snappy/hyperboloid/distances.py +245 -0
- snappy/hyperboloid/horoball.py +19 -0
- snappy/hyperboloid/line.py +35 -0
- snappy/hyperboloid/point.py +9 -0
- snappy/hyperboloid/triangle.py +29 -0
- snappy/isometry_signature.py +382 -0
- snappy/len_spec/__init__.py +596 -0
- snappy/len_spec/geodesic_info.py +110 -0
- snappy/len_spec/geodesic_key_info_dict.py +117 -0
- snappy/len_spec/geodesic_piece.py +143 -0
- snappy/len_spec/geometric_structure.py +182 -0
- snappy/len_spec/geometry.py +80 -0
- snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
- snappy/len_spec/spine.py +206 -0
- snappy/len_spec/test.py +24 -0
- snappy/len_spec/test_cases.py +69 -0
- snappy/len_spec/tile.py +275 -0
- snappy/len_spec/word.py +86 -0
- snappy/math_basics.py +39 -13
- snappy/matrix.py +52 -9
- snappy/number.py +12 -6
- snappy/numeric_output_checker.py +2 -3
- snappy/pari.py +8 -4
- snappy/phone_home.py +2 -1
- snappy/polyviewer.py +8 -8
- snappy/ptolemy/__init__.py +1 -1
- snappy/ptolemy/component.py +2 -2
- snappy/ptolemy/coordinates.py +25 -25
- snappy/ptolemy/findLoops.py +9 -9
- snappy/ptolemy/manifoldMethods.py +27 -29
- snappy/ptolemy/polynomial.py +50 -57
- snappy/ptolemy/processFileBase.py +60 -0
- snappy/ptolemy/ptolemyVariety.py +109 -41
- snappy/ptolemy/reginaWrapper.py +4 -4
- snappy/ptolemy/rur.py +1 -1
- snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
- snappy/ptolemy/test.py +99 -54
- snappy/ptolemy/utilities.py +1 -1
- snappy/raytracing/__init__.py +64 -0
- snappy/raytracing/additional_horospheres.py +64 -0
- snappy/raytracing/additional_len_spec_choices.py +63 -0
- snappy/raytracing/cohomology_fractal.py +0 -3
- snappy/raytracing/eyeball.py +123 -0
- snappy/raytracing/finite_raytracing_data.py +17 -17
- snappy/raytracing/finite_viewer.py +15 -15
- snappy/raytracing/geodesic_tube_info.py +93 -63
- snappy/raytracing/geodesics.py +94 -64
- snappy/raytracing/geodesics_window.py +56 -34
- snappy/raytracing/gui_utilities.py +21 -6
- snappy/raytracing/hyperboloid_navigation.py +29 -4
- snappy/raytracing/hyperboloid_utilities.py +73 -73
- snappy/raytracing/ideal_raytracing_data.py +121 -91
- snappy/raytracing/inside_viewer.py +199 -66
- snappy/raytracing/pack.py +22 -0
- snappy/raytracing/raytracing_data.py +37 -25
- snappy/raytracing/raytracing_view.py +70 -65
- snappy/raytracing/shaders/Eye.png +0 -0
- snappy/raytracing/shaders/NonGeometric.png +0 -0
- snappy/raytracing/shaders/__init__.py +39 -3
- snappy/raytracing/shaders/fragment.glsl +451 -133
- snappy/raytracing/test.py +29 -0
- snappy/raytracing/tooltip.py +146 -0
- snappy/raytracing/upper_halfspace_utilities.py +42 -9
- snappy/sage_helper.py +67 -134
- snappy/settings.py +90 -77
- snappy/shell.py +2 -0
- snappy/snap/character_varieties.py +2 -2
- snappy/snap/find_field.py +4 -3
- snappy/snap/fundamental_polyhedron.py +2 -2
- snappy/snap/kernel_structures.py +5 -1
- snappy/snap/nsagetools.py +9 -8
- snappy/snap/peripheral/dual_cellulation.py +4 -3
- snappy/snap/peripheral/peripheral.py +2 -2
- snappy/snap/peripheral/surface.py +5 -5
- snappy/snap/peripheral/test.py +1 -1
- snappy/snap/polished_reps.py +8 -8
- snappy/snap/slice_obs_HKL.py +16 -14
- snappy/snap/t3mlite/arrow.py +3 -3
- snappy/snap/t3mlite/edge.py +3 -3
- snappy/snap/t3mlite/homology.py +2 -2
- snappy/snap/t3mlite/mcomplex.py +3 -3
- snappy/snap/t3mlite/simplex.py +12 -0
- snappy/snap/t3mlite/spun.py +18 -17
- snappy/snap/t3mlite/test_vs_regina.py +4 -4
- snappy/snap/test.py +37 -53
- snappy/snap/utilities.py +4 -5
- snappy/test.py +121 -138
- snappy/test_cases.py +263 -0
- snappy/testing.py +131 -0
- snappy/tiling/__init__.py +2 -0
- snappy/tiling/canonical_key_dict.py +59 -0
- snappy/tiling/dict_based_set.py +79 -0
- snappy/tiling/floor.py +49 -0
- snappy/tiling/hyperboloid_dict.py +54 -0
- snappy/tiling/iter_utils.py +78 -0
- snappy/tiling/lifted_tetrahedron.py +22 -0
- snappy/tiling/lifted_tetrahedron_set.py +54 -0
- snappy/tiling/real_hash_dict.py +164 -0
- snappy/tiling/test.py +23 -0
- snappy/tiling/tile.py +215 -0
- snappy/tiling/triangle.py +33 -0
- snappy/tkterminal.py +113 -84
- snappy/twister/main.py +1 -7
- snappy/twister/twister_core.cpython-311-darwin.so +0 -0
- snappy/upper_halfspace/__init__.py +78 -17
- snappy/verify/__init__.py +3 -7
- snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
- snappy/verify/complex_volume/adjust_torsion.py +1 -2
- snappy/verify/complex_volume/closed.py +13 -13
- snappy/verify/complex_volume/cusped.py +6 -6
- snappy/verify/complex_volume/extended_bloch.py +5 -8
- snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
- snappy/verify/edge_equations.py +80 -0
- snappy/verify/exceptions.py +0 -55
- snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
- snappy/verify/interval_newton_shapes_engine.py +7 -5
- snappy/verify/interval_tree.py +5 -5
- snappy/verify/krawczyk_shapes_engine.py +17 -18
- snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
- snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
- snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
- snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
- snappy/verify/shapes.py +5 -3
- snappy/verify/short_slopes.py +39 -41
- snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
- snappy/verify/test.py +57 -60
- snappy/verify/upper_halfspace/extended_matrix.py +1 -1
- snappy/verify/upper_halfspace/finite_point.py +3 -4
- snappy/verify/upper_halfspace/ideal_point.py +9 -9
- snappy/verify/volume.py +2 -2
- snappy/version.py +2 -2
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +26 -11
- snappy-3.2.dist-info/RECORD +503 -0
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
- snappy/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/__pycache__/browser.cpython-311.pyc +0 -0
- snappy/__pycache__/cache.cpython-311.pyc +0 -0
- snappy/__pycache__/database.cpython-311.pyc +0 -0
- snappy/__pycache__/db_utilities.cpython-311.pyc +0 -0
- snappy/__pycache__/decorated_isosig.cpython-311.pyc +0 -0
- snappy/__pycache__/exceptions.cpython-311.pyc +0 -0
- snappy/__pycache__/export_stl.cpython-311.pyc +0 -0
- snappy/__pycache__/filedialog.cpython-311.pyc +0 -0
- snappy/__pycache__/gui.cpython-311.pyc +0 -0
- snappy/__pycache__/horoviewer.cpython-311.pyc +0 -0
- snappy/__pycache__/infowindow.cpython-311.pyc +0 -0
- snappy/__pycache__/math_basics.cpython-311.pyc +0 -0
- snappy/__pycache__/matrix.cpython-311.pyc +0 -0
- snappy/__pycache__/number.cpython-311.pyc +0 -0
- snappy/__pycache__/numeric_output_checker.cpython-311.pyc +0 -0
- snappy/__pycache__/pari.cpython-311.pyc +0 -0
- snappy/__pycache__/polyviewer.cpython-311.pyc +0 -0
- snappy/__pycache__/sage_helper.cpython-311.pyc +0 -0
- snappy/__pycache__/version.cpython-311.pyc +0 -0
- snappy/doc/_sources/verify_canon.rst.txt +0 -90
- snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
- snappy/doc/_static/js/html5shiv.min.js +0 -4
- snappy/doc/verify_canon.html +0 -304
- snappy/drilling/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/constants.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/crush.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/cusps.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/debug.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/epsilons.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/exceptions.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/fixed_points.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_info.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_tube.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/geometric_structure.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/line.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/moves.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/peripheral_curves.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/perturb.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/quotient_space.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/spatial_dict.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/subdivide.cpython-311.pyc +0 -0
- snappy/drilling/__pycache__/tracing.cpython-311.pyc +0 -0
- snappy/drilling/geodesic_tube.py +0 -441
- snappy/drilling/geometric_structure.py +0 -366
- snappy/drilling/line.py +0 -122
- snappy/drilling/quotient_space.py +0 -94
- snappy/drilling/spatial_dict.py +0 -128
- snappy/exterior_to_link/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/exceptions.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/hyp_utils.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/link_projection.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/main.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/pl_utils.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/put_in_S3.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-311.pyc +0 -0
- snappy/exterior_to_link/__pycache__/stored_moves.cpython-311.pyc +0 -0
- snappy/hyperboloid/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/manifolds/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/component.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/coordinates.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/fieldExtensions.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/findLoops.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/homology.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/manifoldMethods.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/matrix.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/polynomial.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/processComponents.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileBase.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileDispatch.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/processMagmaFile.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/processRurFile.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVariety.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/rur.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-311.pyc +0 -0
- snappy/ptolemy/__pycache__/utilities.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/finite_raytracing_data.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/gui_utilities.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/hyperboloid_navigation.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/hyperboloid_utilities.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/ideal_raytracing_data.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/inside_viewer.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/raytracing_data.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/raytracing_view.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/upper_halfspace_utilities.cpython-311.pyc +0 -0
- snappy/raytracing/__pycache__/view_scale_controller.cpython-311.pyc +0 -0
- snappy/raytracing/zoom_slider/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/character_varieties.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/fundamental_polyhedron.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/interval_reps.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/kernel_structures.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/mcomplex_base.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/nsagetools.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/polished_reps.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/shapes.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/slice_obs_HKL.cpython-311.pyc +0 -0
- snappy/snap/__pycache__/utilities.cpython-311.pyc +0 -0
- snappy/snap/peripheral/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-311.pyc +0 -0
- snappy/snap/peripheral/__pycache__/link.cpython-311.pyc +0 -0
- snappy/snap/peripheral/__pycache__/peripheral.cpython-311.pyc +0 -0
- snappy/snap/peripheral/__pycache__/surface.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/arrow.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/corner.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/edge.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/face.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/files.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/homology.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/linalg.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/mcomplex.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/perm4.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/simplex.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/spun.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/surface.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-311.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/vertex.cpython-311.pyc +0 -0
- snappy/togl/__init__.py +0 -3
- snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/twister/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/twister/__pycache__/main.cpython-311.pyc +0 -0
- snappy/upper_halfspace/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/upper_halfspace/__pycache__/ideal_point.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/cuspCrossSection.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/cuspTranslations.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/cusp_areas.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/cusp_shapes.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/exceptions.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/interval_tree.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/realAlgebra.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/shapes.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/short_slopes.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/squareExtensions.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/verifyCanonical.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/verifyHyperbolicity.cpython-311.pyc +0 -0
- snappy/verify/__pycache__/volume.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/closed.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/cusped.cpython-311.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-311.pyc +0 -0
- snappy/verify/cuspCrossSection.py +0 -1422
- snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-311.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-311.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/__init__.cpython-311.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-311.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-311.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-311.pyc +0 -0
- snappy-3.1.1.dist-info/RECORD +0 -585
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -5,7 +5,7 @@ Installing SnapPy
|
|
5
5
|
|
6
6
|
Here are detailed instructions on how to get SnapPy working on a
|
7
7
|
variety of platforms. The current version is |release| which was released
|
8
|
-
on |release_date|. If you encounter problems installing SnapPy,
|
8
|
+
on |release_date|. If you encounter any problems installing SnapPy,
|
9
9
|
:doc:`please let us know <bugs>`.
|
10
10
|
|
11
11
|
macOS
|
@@ -14,8 +14,8 @@ macOS
|
|
14
14
|
Simply download `SnapPy.dmg
|
15
15
|
<https://github.com/3-manifolds/SnapPy/releases/latest/download/SnapPy.dmg>`_
|
16
16
|
and copy SnapPy.app to the Applications folder. Double-click to start
|
17
|
-
it, just like any other application.
|
18
|
-
newer
|
17
|
+
it, just like any other application. The current version works with macOS 10.14 and
|
18
|
+
newer and earlier releases `can be found here
|
19
19
|
<https://github.com/3-manifolds/SnapPy/releases/>`_.
|
20
20
|
|
21
21
|
Windows
|
@@ -27,102 +27,154 @@ Earlier releases `can be found here
|
|
27
27
|
<https://github.com/3-manifolds/SnapPy/releases/>`_.
|
28
28
|
|
29
29
|
|
30
|
-
Linux
|
31
|
-
|
30
|
+
Linux app
|
31
|
+
---------
|
32
|
+
|
33
|
+
Starting with SnapPy 3.2, a completely self-contained SnapPy `AppImage
|
34
|
+
<https://docs.appimage.org/introduction/quickstart.html#ref-quickstart>`_
|
35
|
+
is available that should work on any Linux system from the last 5
|
36
|
+
years. This AppImage contains its own private copy of Python, so if
|
37
|
+
you plan to use SnapPy in your own Python programs, skip ahead to
|
38
|
+
`Python Modules for Linux`_. Here is the recipe for installing the
|
39
|
+
AppImage in ``~/bin`` after you have downloaded the file
|
40
|
+
`SnapPy-x86_64.AppImage
|
41
|
+
<https://github.com/3-manifolds/SnapPy/releases/latest/download/SnapPy-x86_64.AppImage.>`_::
|
42
|
+
|
43
|
+
mkdir -p ~/bin
|
44
|
+
mv ~/Downloads/SnapPy-x86_64.AppImage ~/bin
|
45
|
+
chmod +x ~/bin/SnapPy-x86_64.AppImage
|
46
|
+
ln -s -f ~/bin/SnapPy-x86_64.AppImage ~/bin/SnapPy
|
47
|
+
~/bin/SnapPy-x86_64.AppImage --install
|
48
|
+
|
49
|
+
The last command registers the SnapPy app with your desktop system and
|
50
|
+
starts it. Next time, you can start SnapPy by using the desktop
|
51
|
+
search tool with GNOME or the main menu with KDE. You can pin also the icon
|
52
|
+
to your dash or task bar for easy access. From a terminal window, you
|
53
|
+
can also start the app by typing ``SnapPy`` provided ``~/bin`` is in
|
54
|
+
your `$PATH <https://opensource.com/article/17/6/set-path-linux>`_.
|
55
|
+
|
32
56
|
|
33
|
-
|
34
|
-
|
35
|
-
instructions assume you have system administrator (superuser)
|
36
|
-
privileges to install software packages from your Linux distribution
|
37
|
-
but want to install SnapPy (and its various Python dependencies) just
|
38
|
-
in your own user directory, specifically ``~/.local``. For other
|
39
|
-
Linux systems, try the one closest to yours below, and if that fails,
|
40
|
-
follow the instructions for `generic Unix`_.
|
57
|
+
Python Modules for macOS or Windows
|
58
|
+
-----------------------------------
|
41
59
|
|
42
|
-
|
60
|
+
If you write Python programs on macOS or Windows, you may wish to
|
61
|
+
install SnapPy as a Python module into your own copy of Python. We
|
62
|
+
support Python 3.9 and up. (On macOS, use a Python downloaded from
|
63
|
+
`Python.org <http://python.org>`_ and not the one provided by Apple.)
|
64
|
+
After installing Python, you may install a SnapPy module from your
|
65
|
+
Terminal application or Command Prompt with the command::
|
43
66
|
|
44
|
-
|
45
|
-
# Note no "sudo" on the next one!
|
46
|
-
python3 -m pip install --upgrade --user snappy
|
67
|
+
python3 -m pip install --upgrade --user snappy snappy_15_knots
|
47
68
|
|
48
|
-
|
69
|
+
If you do not want the larger version of HTLinkExteriors that includes
|
70
|
+
the 15 crossing knots (it uses 110M of disk space), omit
|
71
|
+
``snappy_15_knots`` from the command.
|
49
72
|
|
50
|
-
sudo apt-get install python3-tk python3-pip
|
51
|
-
# Note no "sudo" on the next two
|
52
|
-
python3 -m pip install --upgrade --user pip wheel
|
53
|
-
python3 -m pip install --upgrade --user snappy
|
54
73
|
|
55
|
-
|
74
|
+
Python Modules for Linux
|
75
|
+
------------------------
|
56
76
|
|
57
|
-
|
58
|
-
|
59
|
-
|
77
|
+
You can also use SnapPy with your Linux system's version of Python,
|
78
|
+
for example if you want to incorporate SnapPy in your own Python
|
79
|
+
scripts. These instructions assume you have system administrator
|
80
|
+
(superuser) privileges to install software packages from your Linux
|
81
|
+
distribution. (If you're not a superuser, use either the
|
82
|
+
`Linux app`_ or `conda`_.)
|
60
83
|
|
61
|
-
|
62
|
-
|
63
|
-
available
|
64
|
-
<https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F>`_.
|
65
|
-
For CentOS and SciLinux, you can access EPEL packages by doing::
|
84
|
+
The first step is to install Python and other requirements; here's how
|
85
|
+
to do that on the most popular Linux distributions:
|
66
86
|
|
67
|
-
|
87
|
+
+ **Ubuntu/Debian/Mint/MX Linux/Elementary:** Tested on Ubuntu 24.04::
|
68
88
|
|
69
|
-
|
89
|
+
sudo apt install python3-pip python3-tk
|
70
90
|
|
71
|
-
|
72
|
-
# Note no "sudo" on the next one!
|
73
|
-
python36 -m pip install --upgrade --user snappy
|
91
|
+
+ **Fedora**: Tested on Fedora 41::
|
74
92
|
|
75
|
-
|
93
|
+
sudo dnf install python3-pip python3-tkinter
|
94
|
+
|
95
|
+
+ **Arch/Manjaro/EndeavourOS**: Install via::
|
76
96
|
|
77
97
|
sudo pacman -Sy python-pip tk
|
78
|
-
# Note no "sudo" on the next one!
|
79
|
-
python -m pip install --upgrade --user snappy
|
80
98
|
|
81
|
-
+ **openSUSE**:
|
99
|
+
+ **openSUSE**: For Tumbleweed::
|
82
100
|
|
83
|
-
sudo zypper install -
|
84
|
-
# Note no "sudo" on the next one!
|
85
|
-
python3 -m pip install --upgrade --user snappy
|
101
|
+
sudo zypper install python3-pip python3-tk
|
86
102
|
|
87
|
-
|
88
|
-
|
89
|
-
package ``snappy_15_knots``, e.g. on Ubuntu do::
|
103
|
+
For Leap, as of version 15.6 you need to ask for a recent version of
|
104
|
+
Python or it will give you Python 3.6 which is too old for SnapPy::
|
90
105
|
|
91
|
-
|
106
|
+
sudo zypper install python312-pip python312-tk
|
92
107
|
|
93
|
-
|
108
|
+
You will need to replace ``python3`` by ``python3.12`` in subsequent
|
109
|
+
steps.
|
110
|
+
|
111
|
+
+ **Red Hat Enterprise Linux/CentOS/Rocky Linux/AlmaLinux:**: These instructions
|
112
|
+
are for version 8 or later; tested on AlmaLinux 8 and 9::
|
113
|
+
|
114
|
+
sudo dnf install python3.11-pip python3.11-tkinter
|
115
|
+
|
116
|
+
You will also need to replace ``python3`` by ``python3.11`` in subsequent
|
117
|
+
steps.
|
94
118
|
|
95
|
-
~/.local/bin/SnapPy
|
96
119
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
120
|
+
Next, you need to install the SnapPy Python modules. For this, you can
|
121
|
+
either use a *virtual environment* (``python -m venv``) or do a *user
|
122
|
+
install* (``pip install --user``). The former will work on any
|
123
|
+
version of Linux, whereas the latter is now strongly discouraged on
|
124
|
+
many systems (e.g. Ubuntu 24.04). If you have not previously
|
125
|
+
installed SnapPy on this computer, we recommend using a virtual
|
126
|
+
environment, but suggest a user install if you are upgrading an
|
127
|
+
existing version of SnapPy that was installed in that manner.
|
103
128
|
|
129
|
+
Virtual environment
|
130
|
+
Here is the `official tutorial
|
131
|
+
<https://docs.python.org/3/tutorial/venv.html>`_ on using virtual
|
132
|
+
environments in Python and an `in-depth article
|
133
|
+
<https://realpython.com/python-virtual-environments-a-primer/>`_. A
|
134
|
+
recipe is::
|
104
135
|
|
105
|
-
|
106
|
-
|
136
|
+
python3 -m venv snappy_venv
|
137
|
+
# Switch to snappy_venv's Python
|
138
|
+
source snappy_venv/bin/activate
|
139
|
+
pip install snappy snappy_15_knots
|
140
|
+
# Start the SnapPy app!
|
141
|
+
SnapPy
|
142
|
+
# Return to system Python
|
143
|
+
deactivate
|
107
144
|
|
108
|
-
If you
|
109
|
-
|
110
|
-
|
111
|
-
downloaded from `Python.org <http://python.org>`_ and not the one
|
112
|
-
provided by Apple.) After installing Python, you may install a SnapPy
|
113
|
-
module from your Terminal application or Command Prompt with the
|
114
|
-
commands::
|
145
|
+
If you always want to use the ``snappy_venv`` Python, adjust your
|
146
|
+
`$PATH <https://opensource.com/article/17/6/set-path-linux>`_ to
|
147
|
+
**start** with ``snappy_venv/bin``.
|
115
148
|
|
116
|
-
|
149
|
+
User install
|
150
|
+
To do a user install with pip, try::
|
117
151
|
|
118
|
-
|
119
|
-
|
152
|
+
# Note no "sudo" below!
|
153
|
+
python3 -m pip install --upgrade --user snappy snappy_15_knots
|
120
154
|
|
121
|
-
|
155
|
+
If you get a long error message that starts::
|
122
156
|
|
123
|
-
|
124
|
-
|
125
|
-
|
157
|
+
error: externally-managed-environment
|
158
|
+
|
159
|
+
you should probably use a virtual environment; however,
|
160
|
+
you can force pip to do a user install via::
|
161
|
+
|
162
|
+
# Note no "sudo" below!
|
163
|
+
python3 -m pip install --upgrade --user --break-system-packages snappy snappy_15_knots
|
164
|
+
|
165
|
+
Despite the scary name, provided you don't use ``sudo``, this will
|
166
|
+
not actually modify the system packages, but rather install
|
167
|
+
``snappy`` into the subdirectory
|
168
|
+
``~/.local/share/python3.*/site-packages`` of your home directory.
|
169
|
+
|
170
|
+
After a user install, you run the following command to start
|
171
|
+
the app::
|
172
|
+
|
173
|
+
~/.local/bin/SnapPy
|
174
|
+
|
175
|
+
So that you can start SnapPy with just the command ``SnapPy``, make
|
176
|
+
sure ``~/.local/bin`` is in `in your path
|
177
|
+
<https://opensource.com/article/17/6/set-path-linux>`_.
|
126
178
|
|
127
179
|
|
128
180
|
SageMath
|
@@ -131,15 +183,9 @@ SageMath
|
|
131
183
|
SnapPy has some special features when used within `SageMath
|
132
184
|
<http://sagemath.org>`_, the universal mathematics software based on
|
133
185
|
Python. This section describes how to install SnapPy into your
|
134
|
-
existing copy of SageMath
|
135
|
-
`kitchen sink`_ approach instead. You can install it as a Sage
|
136
|
-
optional package via the following if using Sage 6.4 or newer::
|
137
|
-
|
138
|
-
sage -pip install snappy
|
139
|
-
sage -pip install snappy_15_knots # Larger version of HTLinkExteriors
|
186
|
+
existing copy of SageMath::
|
140
187
|
|
141
|
-
|
142
|
-
<https://github.com/3-manifolds/Sage_macOS/releases>`_.
|
188
|
+
sage -pip install --upgrade snappy snappy_15_knots
|
143
189
|
|
144
190
|
Alternatively, SageMath on `CoCalc <https://cocalc.com/>`_ (formerly
|
145
191
|
the SageMathCloud) also has SnapPy preinstalled, and the graphics
|
@@ -147,17 +193,13 @@ features even work via the `X11 interface
|
|
147
193
|
<http://blog.sagemath.com/cocalc/2018/11/05/x11.html>`_, see the
|
148
194
|
bottom of that page for more.
|
149
195
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
not work, depending on how Tkinter was configured within Sage, and may
|
158
|
-
seem to "hang" when you try to start them. To deal with the latter
|
159
|
-
issue type "%gui tk" at the Sage prompt; please note that doing so may
|
160
|
-
break Sage's "attach" feature.
|
196
|
+
The graphical features may or may not work, depending on how Tkinter
|
197
|
+
was configured within Sage. (There is no problem on macOS if you use
|
198
|
+
this `SageMath binary
|
199
|
+
<https://github.com/3-manifolds/Sage_macOS/releases>`_.) If the
|
200
|
+
graphical features seem to "hang" when you try to start them, type
|
201
|
+
``%gui tk`` at the Sage prompt; please note that doing so may break
|
202
|
+
Sage's "attach" feature.
|
161
203
|
|
162
204
|
|
163
205
|
Kitchen sink
|
@@ -173,83 +215,24 @@ computational tools in low-dimensional topology including
|
|
173
215
|
and `flipper <http://flipper.readthedocs.io>`_.
|
174
216
|
We offer a `prepackaged Docker image
|
175
217
|
<https://hub.docker.com/r/computop/sage/>`_ with all of the above tools
|
176
|
-
and many more; using this is
|
177
|
-
working setup for such multifaceted computations. For more, watch
|
218
|
+
and many more; using this is sometimes the easiest way to get a
|
219
|
+
working setup for such multifaceted computations, especially on Windows. For more, watch
|
178
220
|
`this demonstration <https://icerm.brown.edu/video_archive/?play=1992>`_.
|
179
221
|
|
180
|
-
We also offer `conda environments
|
181
|
-
<https://github.com/unhyperbolic/condaForSnapPy>`_ with SnapPy and
|
182
|
-
optionally Sage (only on Mac OS and Linux). While it has none of the
|
183
|
-
other aforementioned tools, it has the advantage that the GUI elements
|
184
|
-
such as the link editor and the browser can be used directly.
|
185
222
|
|
223
|
+
Conda
|
224
|
+
-----
|
186
225
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
packages don't work for you, you'll need to build SnapPy from source.
|
192
|
-
Here are some detailed instructions.
|
193
|
-
|
194
|
-
Things you'll need:
|
195
|
-
|
196
|
-
- Python 3 with Tkinter: You'll need to have `Python
|
197
|
-
<http://python.org>`_ (version 3.6 or newer) and `Tk
|
198
|
-
<http://tcl.tk>`_ (at least version 8.5) with `Tkinter
|
199
|
-
<http://wiki.python.org/moin/TkInter>`_ to connect them, including
|
200
|
-
the header files. For instance, on Debian or Ubuntu, install the
|
201
|
-
packages "python3-tk", "python3-pip", and "python3-dev". On Fedora,
|
202
|
-
you'll want e.g. "python3-tkinter", "python3-pip", and
|
203
|
-
"python3-devel", and "python3-wheel".
|
204
|
-
|
205
|
-
- Test that Python is in order by installing PLink from source::
|
206
|
-
|
207
|
-
python3 -m pip install --user plink
|
208
|
-
python3 -m plink.app # Should start the link editor!
|
209
|
-
|
210
|
-
.. _openglmesa:
|
211
|
-
|
212
|
-
- Support for OpenGL (3D graphics): This is built in on OS X and the
|
213
|
-
most installations of Fedora and Ubuntu. But you'll need the `MESA
|
214
|
-
<http://www.mesa3d.org/>`_ header files "gl.h" and "glu.h" to compile
|
215
|
-
SnapPy. On Debian and Ubuntu, install "libglu1-mesa-dev"; On Fedora install
|
216
|
-
"mesa-libGLU-devel".
|
217
|
-
|
218
|
-
- `Cython <http://cython.org>`_, which you can install via::
|
219
|
-
|
220
|
-
python3 -m pip install --user cython
|
221
|
-
|
222
|
-
- The gcc C++ compiler, g++.
|
223
|
-
|
224
|
-
- `CyPari <https://pypi.python.org/pypi/cypari/>`_: a stand-alone version of
|
225
|
-
`Sage's <http://sagemath.org>`_ Python interface to the
|
226
|
-
`PARI <http://pari.math.u-bordeaux.fr/PARI>`_ number theory
|
227
|
-
library. Usually, you can install this with::
|
228
|
-
|
229
|
-
python3 -m pip install --user cypari
|
230
|
-
|
231
|
-
Now download the `source code`_ listed below, for instance
|
232
|
-
|
233
|
-
.. parsed-literal::
|
234
|
-
|
235
|
-
wget https://pypi.python.org/packages/source/s/snappy/|tarball|
|
236
|
-
tar xfz |tarball|; cd snappy-*
|
237
|
-
|
238
|
-
There is one more dependency that may need to be dealt with:
|
239
|
-
|
240
|
-
- `Togl <http://togl.sf.net>`_: a 3d widget for Tk. For OS X and
|
241
|
-
Linux, there are pre-built binaries of this in the snappy
|
242
|
-
subdirectory, e.g. snappy/linux2-tk8.4. For Linux these are built
|
243
|
-
for 64-bit kernels, and should work on most systems. If they don't,
|
244
|
-
you'll need to edit or follow "build_togl.sh" to build Togl directly.
|
245
|
-
|
246
|
-
Finally, compile and install the SnapPy module (which will install
|
247
|
-
certain other dependencies) and test::
|
226
|
+
Conda can be used to install Python on all platforms and is a
|
227
|
+
particularly good choice to use SnapPy on the older Linux systems
|
228
|
+
often found on high-performance clusters. Here is a recipe for
|
229
|
+
installing SnapPy into a new conda environment on macOS or Linux::
|
248
230
|
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
231
|
+
source ~/miniforge3/bin/activate
|
232
|
+
mamba create --name snappy_env python=3.12
|
233
|
+
conda activate snappy_env
|
234
|
+
pip install snappy
|
235
|
+
python -m snappy.app
|
253
236
|
|
254
237
|
|
255
238
|
Source code
|
snappy/doc/_sources/news.rst.txt
CHANGED
@@ -4,7 +4,79 @@
|
|
4
4
|
News
|
5
5
|
====
|
6
6
|
|
7
|
-
|
7
|
+
|
8
|
+
* Version 3.2 (January 2025):
|
9
|
+
|
10
|
+
- An alternative implementation of the length spectrum. It supports verified
|
11
|
+
computations and is significantly faster in some cases. See
|
12
|
+
:meth:`length_spectrum_alt <snappy.Manifold.length_spectrum_alt>`
|
13
|
+
and
|
14
|
+
:meth:`length_spectrum_alt_gen <snappy.Manifold.length_spectrum_alt_gen>`.
|
15
|
+
|
16
|
+
- :meth:`isometry_signature <snappy.Manifold.isometry_signature>` now also
|
17
|
+
works for closed manifolds.
|
18
|
+
|
19
|
+
- A paper plane or eye ball in the
|
20
|
+
:meth:`inside_view <snappy.Manifold.inside_view>` showing the position
|
21
|
+
and bearing of the user in the hyperbolic manifold. By default, we now show
|
22
|
+
the paper plane instead of the edges of the triangulation so that the view
|
23
|
+
is intrinsic to the manifold. The geodesics window now also features a
|
24
|
+
button to put the camera onto a geodesic. Here are some examples:
|
25
|
+
|
26
|
+
.. list-table::
|
27
|
+
:width: 100%
|
28
|
+
:class: borderless
|
29
|
+
|
30
|
+
* - .. image:: images/o9_00000_systole_paper_plane.jpg
|
31
|
+
:width: 90%
|
32
|
+
:align: center
|
33
|
+
:alt: Paper plane near shortest geodesic of o9_00000
|
34
|
+
- .. image:: images/o9_00000_systole_paper_plane_closer.jpg
|
35
|
+
:width: 90%
|
36
|
+
:align: center
|
37
|
+
:alt: Paper plane very near shortest geodesic of o9_00000
|
38
|
+
- .. image:: images/m004_paper_plane_on_systole.jpg
|
39
|
+
:width: 90%
|
40
|
+
:align: center
|
41
|
+
:alt: Paper plane on shortest geodesic of m004
|
42
|
+
- .. image:: images/m125_paper_plane.jpg
|
43
|
+
:width: 90%
|
44
|
+
:align: center
|
45
|
+
:alt: Paper plane coming out of a cusp of m125
|
46
|
+
|
47
|
+
- A faster and more robust algorithm to the compute maximal cusp area matrix.
|
48
|
+
The new algorithm is now the default for
|
49
|
+
:meth:`~snappy.Manifold.cusp_area_matrix`,
|
50
|
+
:meth:`~snappy.Manifold.cusp_areas`,
|
51
|
+
:meth:`~snappy.Manifold.short_slopes` and
|
52
|
+
:meth:`~snappy.Manifold.cusp_translations`.
|
53
|
+
|
54
|
+
- New options ``ignore_curves`` and ``ignore_filling_orientations``
|
55
|
+
for :meth:`~snappy.Triangulation.triangulation_isosig`. Also
|
56
|
+
fixing a subtle bug where the filling coefficients returned by
|
57
|
+
:meth:`triangulation_isosig <snappy.Triangulation.triangulation_isosig>` were
|
58
|
+
not canonical when ``ignore_curve_orientations = True``.
|
59
|
+
|
60
|
+
- :meth:`~snappy.Manifold.canonical_retriangulation`
|
61
|
+
and
|
62
|
+
:meth:`~snappy.Manifold.isometry_signature` fail with
|
63
|
+
exceptions rather than silently returning ``None``. In particular, it now
|
64
|
+
safe to compare isometry signatures (without further checks) to determine
|
65
|
+
whether M and N are isometric hyperbolic manifolds::
|
66
|
+
|
67
|
+
>>> M.isometry_signature(verified=True) == N.isometry_signature(verified=True)
|
68
|
+
|
69
|
+
- Bug fix to :meth:`slice_obstruction_HKL
|
70
|
+
<snappy.Manifold.slice_obstruction_HKL>`: earlier versions
|
71
|
+
incorrectly allowed looking at mod 2 homology of the branched
|
72
|
+
cover, where the theory does not directly apply.
|
73
|
+
|
74
|
+
- New self-contained SnapPy application for Linux.
|
75
|
+
|
76
|
+
- Support for Python 3.13 and SageMath 10.5.
|
77
|
+
|
78
|
+
|
79
|
+
* Versions 3.1 (May 2023) and 3.1.1 (June 2023):
|
8
80
|
|
9
81
|
- A method :meth:`exterior_to_link <snappy.Manifold.exterior_to_link>`
|
10
82
|
for going from a link exterior to a link diagram taken from
|
@@ -146,7 +146,7 @@ Compute the matrices for a representation
|
|
146
146
|
|
147
147
|
**Remark:** Requires SnapPy 2.3 or later.
|
148
148
|
|
149
|
-
Given a solution as above, we can take a word in the fundamental group and get its image under the representation using
|
149
|
+
Given a solution as above, we can take a word in the fundamental group and get its image under the representation using :py:meth:`~snappy.ptolemy.coordinates.PtolemyCoordinates.evaluate_word`. Here, we do it for the two generators::
|
150
150
|
|
151
151
|
>>> M = Manifold("m003")
|
152
152
|
>>> sol = M.ptolemy_variety(2).retrieve_solutions()[0]
|
@@ -156,16 +156,17 @@ Given a solution as above, we can take a word in the fundamental group and get i
|
|
156
156
|
[[Mod(x, x^2 - x - 1), Mod(x, x^2 - x - 1)],
|
157
157
|
[Mod(-x, x^2 - x - 1), Mod(-1, x^2 - x - 1)]]
|
158
158
|
|
159
|
-
By default, this word is with respect to the presentation of the fundamental group
|
159
|
+
By default, this word is with respect to the unsimplified presentation of the fundamental group. Thus, we expect the identity matrix when we evaluate a relator (for PSL(*N*, **C**) the diagonal element will be an *N*-th root of unity)::
|
160
160
|
|
161
|
-
>>> M.fundamental_group()
|
161
|
+
>>> M.fundamental_group(simplify_presentation=False)
|
162
162
|
Generators:
|
163
|
-
a,b
|
163
|
+
a,b,c
|
164
164
|
Relators:
|
165
|
-
|
166
|
-
|
165
|
+
BCaC
|
166
|
+
AbCbA
|
167
|
+
>>> sol.evaluate_word('BCaC')
|
167
168
|
[[Mod(1, x^2 - x - 1), 0], [0, Mod(1, x^2 - x - 1)]]
|
168
|
-
|
169
|
+
|
169
170
|
We revisit computing the matrices :ref:`here <ptolemy-detailed-example-matrices>` to explain how to use a different presentation of the fundamental group.
|
170
171
|
|
171
172
|
**Remark:** The matrices are currently returned as a list of list of pari ``POLMOD`` objects. In the future, the ptolemy module should return the matrices as sage matrices over a `sage NumberField <http://doc.sagemath.org/html/en/reference/number_fields/sage/rings/number_field/number_field.html>`_.
|
@@ -101,7 +101,7 @@ And here the same example retrieving solutions from the database::
|
|
101
101
|
Computing the matrices for a different presentation
|
102
102
|
---------------------------------------------------
|
103
103
|
|
104
|
-
The
|
104
|
+
The :py:meth:`~snappy.Triangulation.fundamental_group` method of a SnapPy triangulation can yield different presentations by supplying optional arguments such as ``simplify_presentation`` and ``minimize_number_of_generators``. If we have a word in one of these presentations and want to evaluate its image under the representation, we need to supply the presentation as follows::
|
105
105
|
|
106
106
|
>>> M=Manifold("m003")
|
107
107
|
>>> sol = M.ptolemy_variety(2).retrieve_solutions()[0]
|
@@ -129,7 +129,7 @@ Again, we can check that the representation actually assigns the identity to all
|
|
129
129
|
Computing the images of the peripheral curves for a representation
|
130
130
|
------------------------------------------------------------------
|
131
131
|
|
132
|
-
The object returned by
|
132
|
+
The object returned by :py:meth:`~snappy.Triangulation.fundamental_group` also contains words for the peripheral curves of a manifold. We can compute the corresponding matrices::
|
133
133
|
|
134
134
|
>>> M = Manifold("m003")
|
135
135
|
>>> G = M.fundamental_group()
|