Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions cython/core/manifold.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -1627,15 +1627,6 @@ cdef class Manifold(Triangulation):

return ans

def is_isometric_to(self,
Manifold other,
return_isometries : bool = False):
"""
This is only here to make the tests that use SnapPy.Manifold work.
"""
return self._is_isometric_to(
other, return_isometries = return_isometries)

def is_two_bridge(self) -> bool:
"""
If the manifold is the complement of a two-bridge knot or link
Expand Down
6 changes: 0 additions & 6 deletions cython/core/triangulation.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -1020,12 +1020,6 @@ cdef class Triangulation():
free_isometry_list(isometries)
return result

def isomorphisms_to(self, Triangulation other not None):
"""
This is only here to make the tests that use SnapPy.Triangulation work.
"""
return self._isomorphisms_to(other)

def __dealloc__(self):
if self.c_triangulation is not NULL:
free_triangulation(self.c_triangulation)
Expand Down
98 changes: 43 additions & 55 deletions python/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,50 @@

from typing import Union, Tuple, List, Optional

from . import exterior_to_link
from . import verify
from . import margulis
from . import len_spec
from . import cusps
from . cusps import cusp_area_matrix
from . import raytracing
from . import isometry_signature
from . import snap
from .snap import nsagetools, slice_obs_HKL, fox_milnor

class TriangulationMixIn:
exterior_to_link = exterior_to_link.exterior_to_link
alexander_polynomial = nsagetools.alexander_polynomial
homological_longitude = nsagetools.homological_longitude
slice_obstruction_HKL = slice_obs_HKL.slice_obstruction_HKL
fox_milnor_test = fox_milnor.fox_milnor_test

class ManifoldMixIn:
verify_hyperbolicity = verify.verify_hyperbolicity
margulis = margulis.margulis
length_spectrum_alt_gen = len_spec.length_spectrum_alt_gen
length_spectrum_alt = len_spec.length_spectrum_alt
isometry_signature = isometry_signature.isometry_signature
cusp_area_matrix = cusp_area_matrix.cusp_area_matrix
cusp_areas = cusps.cusp_areas
short_slopes = cusps.short_slopes
cusp_translations = cusps.cusp_translations
inside_view = raytracing.inside_view
polished_holonomy = snap.polished_holonomy
tetrahedra_field_gens = snap.tetrahedra_field_gens
trace_field_gens = snap.trace_field_gens
invariant_trace_field_gens = snap.invariant_trace_field_gens
holonomy_matrix_entries = snap.holonomy_matrix_entries
hyperbolic_torsion = nsagetools.hyperbolic_torsion
hyperbolic_adjoint_torsion = nsagetools.hyperbolic_adjoint_torsion
hyperbolic_SLN_torsion = nsagetools.hyperbolic_SLN_torsion

# Subclass to be able to monkey-patch
class Triangulation(SnapPy.Triangulation):
class Triangulation(SnapPy.Triangulation, TriangulationMixIn):
__doc__ = SnapPy.Triangulation.__doc__

# Subclass to be able to monkey-patch
class TriangulationHP(SnapPyHP.Triangulation):
class TriangulationHP(SnapPyHP.Triangulation, TriangulationMixIn):
__doc__ = SnapPyHP.Triangulation.__doc__

# We want Manifold to be a subclass of Triangulation.
Expand All @@ -42,7 +80,7 @@ class TriangulationHP(SnapPyHP.Triangulation):
# in the presence of a diamond pattern seem to work just
# fine. In particular, we do not double allocate the underlying
# C structures.
class Manifold(SnapPy.Manifold, Triangulation):
class Manifold(SnapPy.Manifold, Triangulation, ManifoldMixIn):
__doc__ = SnapPy.Manifold.__doc__

def identify(self, extends_to_link=False):
Expand Down Expand Up @@ -98,7 +136,7 @@ def low_precision(self):

# We want ManifoldHP to be a subclass of TriangulationHP.
# See comment about Manifold and the diamond pattern.
class ManifoldHP(SnapPyHP.Manifold, TriangulationHP):
class ManifoldHP(SnapPyHP.Manifold, TriangulationHP, ManifoldMixIn):
__doc__ = SnapPyHP.Manifold.__doc__

def low_precision(self):
Expand Down Expand Up @@ -234,56 +272,12 @@ def isomorphisms_to(self,
resolved_other)

isomorphisms_to.__doc__ = SnapPy.Triangulation._isomorphisms_to.__doc__
Triangulation.isomorphisms_to = isomorphisms_to
TriangulationHP.isomorphisms_to = isomorphisms_to

from . import snap
snap.add_methods(Manifold)
snap.add_methods(ManifoldHP)
snap.add_methods(Triangulation, hyperbolic=False)
snap.add_methods(TriangulationHP, hyperbolic=False)

from . import exterior_to_link
Triangulation.exterior_to_link = exterior_to_link.exterior_to_link
TriangulationHP.exterior_to_link = exterior_to_link.exterior_to_link

from . import verify
Manifold.verify_hyperbolicity = verify.verify_hyperbolicity
ManifoldHP.verify_hyperbolicity = verify.verify_hyperbolicity

from . import margulis
Manifold.margulis = margulis.margulis
ManifoldHP.margulis = margulis.margulis

from . import len_spec
Manifold.length_spectrum_alt_gen = len_spec.length_spectrum_alt_gen
ManifoldHP.length_spectrum_alt_gen = len_spec.length_spectrum_alt_gen
Manifold.length_spectrum_alt = len_spec.length_spectrum_alt
ManifoldHP.length_spectrum_alt = len_spec.length_spectrum_alt
TriangulationMixIn.isomorphisms_to = isomorphisms_to

from . import canonical
Manifold.canonical_retriangulation = canonical.canonical_retriangulation
ManifoldHP.canonical_retriangulation = canonical.canonical_retriangulation_hp

from . import isometry_signature

Manifold.isometry_signature = isometry_signature.isometry_signature
ManifoldHP.isometry_signature = isometry_signature.isometry_signature

from .cusps import cusp_area_matrix

Manifold.cusp_area_matrix = cusp_area_matrix.cusp_area_matrix
ManifoldHP.cusp_area_matrix = cusp_area_matrix.cusp_area_matrix

from . import cusps

Manifold.cusp_areas = cusps.cusp_areas
ManifoldHP.cusp_areas = cusps.cusp_areas
Manifold.short_slopes = cusps.short_slopes
ManifoldHP.short_slopes = cusps.short_slopes
Manifold.cusp_translations = cusps.cusp_translations
ManifoldHP.cusp_translations = cusps.cusp_translations

def complex_volume(manifold, verified_modulo_2_torsion=False,
bits_prec=None):
"""
Expand Down Expand Up @@ -349,12 +343,6 @@ def complex_volume(manifold, verified_modulo_2_torsion=False,
drilling._add_methods(Manifold)
drilling._add_methods(ManifoldHP, high_precision=True)

from . import raytracing

Manifold.inside_view = raytracing.inside_view
ManifoldHP.inside_view = raytracing.inside_view


def all_translations(self, verified=False, bits_prec=None):
"""
Returns the (complex) Euclidean translations of the meridian
Expand Down
2 changes: 1 addition & 1 deletion python/isometry_signature.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from . import Triangulation, TriangulationHP, ManifoldHP
from . import verify
from .sage_helper import _within_sage
from .math_basics import is_RealIntervalFieldElement
Expand Down Expand Up @@ -376,6 +375,7 @@ def drill_manifold_precisions(
raise err

def compute_meridian_slopes(isosig, tri):
from . import Triangulation
isosig_tri = Triangulation(isosig, remove_finite_vertices=False)
# Do not call isosig_tri.set_peripheral_curves('combinatorial')
# here.
Expand Down
16 changes: 0 additions & 16 deletions python/snap/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,19 +99,3 @@ def func(prec):
match_kernel=match_kernel)
return sum( [G.SL2C(g).list() for g in G.generators()], [])
return ListOfApproximateAlgebraicNumbers(func)


def add_methods(mfld_class, hyperbolic=True):
mfld_class.alexander_polynomial = nsagetools.alexander_polynomial
mfld_class.homological_longitude = nsagetools.homological_longitude
mfld_class.slice_obstruction_HKL = slice_obs_HKL.slice_obstruction_HKL
mfld_class.fox_milnor_test = fox_milnor.fox_milnor_test
if hyperbolic:
mfld_class.polished_holonomy = polished_holonomy
mfld_class.tetrahedra_field_gens = tetrahedra_field_gens
mfld_class.trace_field_gens = trace_field_gens
mfld_class.invariant_trace_field_gens = invariant_trace_field_gens
mfld_class.holonomy_matrix_entries = holonomy_matrix_entries
mfld_class.hyperbolic_torsion = nsagetools.hyperbolic_torsion
mfld_class.hyperbolic_adjoint_torsion = nsagetools.hyperbolic_adjoint_torsion
mfld_class.hyperbolic_SLN_torsion = nsagetools.hyperbolic_SLN_torsion
24 changes: 22 additions & 2 deletions python/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,32 @@ def additional_doctests(verbose=False, print_info=True):
extraglobs = globs)
additional_doctests.__name__ = 'snappy.<HARD TO REACH>'

def run_SnapPy_doctests(verbose=False, print_info=True):
globs = {'Triangulation' : snappy.Triangulation,
'Manifold' : snappy.Manifold}
return doctest_modules(
[ snappy.SnapPy ],
verbose=verbose,
print_info=print_info,
extraglobs=globs)
run_SnapPy_doctests.__name__ = 'snappy.SnapPy'

def run_SnapPyHP_doctests(verbose=False, print_info=True):
globs = {'Triangulation' : snappy.TriangulationHP,
'Manifold' : snappy.ManifoldHP}
return doctest_modules(
[ snappy.SnapPyHP ],
verbose=verbose,
print_info=print_info,
extraglobs = globs)
run_SnapPyHP_doctests.__name__ = 'snappy.SnapPyHP'

modules = [
snappy.exterior_to_link.test.run_doctests,
snappy.numeric_output_checker.run_doctests,
snappy.number,
snappy.SnapPy,
snappy.SnapPyHP,
run_SnapPy_doctests,
run_SnapPyHP_doctests,
snappy.database,
additional_doctests,
snappy,
Expand Down
Loading