``A census of tetrahedral manifolds'' Evgeny Fominykh, Stavros Garoufalidis, Matthias Goerner, Vladimir Tarkaev, Andrei Vesnin. This directory contains source and data files accompanying the paper. The data contain the census of all tetrahedral tessellations and tetrahedral manifolds up to 25 (orientable), respectively, 21 (non-orientable) tetrahedra. ******************************************************************************* * snappy: A SnapPy census (requires snappy) * ******************************************************************************* To use it, go to the "snappy" directory and within SnapPy/python/sage, simply type >>> from tetrahedralCuspedCensus import * TetrahedralOrientableCuspedCensus and TetrahedralNonorientableCuspedCensus behave just like the other SnapPy censuses and you can do queries such as >>> TetrahedralOrientableCuspedCensus['otet02_0001'] >>> TetrahedralOrientableCuspedCensus(tets = 3) >>> TetrahedralOrientableCuspedCensus(tets = 10, cusps = 5) >>> TetrahedralOrientableCuspedCensus.identify(Manifold("m004")) This has been tested in SnapPy 2.2 and SnapPy 2.3a2. ******************************************************************************* * regina: A regina census (requires regina) * ******************************************************************************* The two rga files in the directory "regina" contain the census of tetrahedral tessellations. The difference to the SnapPy census is that the different tetrahedral tessellations for the same manifold are also listed, grouped under a node with the manifold name, together with the canonical retriangulation. regina/example.py gives an example of how to access the triangulations in the regina file using the python API. ******************************************************************************* * data: Lists of the isomorphism signatures * ******************************************************************************* The directory "data" contains lists of isomorphism signatures of the tetrahedral tessellations. The files "namedIsometric..." group the tessellations yielding the same manifold into the same line where each line is of the form name listOfIsomorphismSignaturesOfTetrahedralTessellations isometrySignature The isomorphism signatures within a line (if multiple) are sorted lexicographically. The lines within a file are sorted lexicographically by first isomorphism signature. ******************************************************************************* * src/canonical.py: certify canonical triangulation (requires hikmot, snappy) * ******************************************************************************* Even though this file is not used to generate the tetrahedral census, the reader might be interested in this improvement to the original file by Dunfield, Hoffman, Licata which can now handle manifolds with an arbitrary number of cusps. Tested using hikmot version 1.0.1 and SnapPy 2.2 under Linux. ******************************************************************************* * Steps to reproduce the census * ******************************************************************************* Tested using a patched version of SnapPy 2.2 (see instructions below), Regina version 4.96, and Sage 6.4 under Linux. * Step 1: Generate all isomorphism signatures of the tetrahedral tessellations. The parameters indicate orientability and number of tetrahedra. Each command takes about 6 weeks on a 2.3Ghz Xeon E5-2630 and requires about 70Gb RAM. src/genIsomoSigsOfTetrahedralTessellations 25 o \ > data/orientableTetrahedralTessellations_up_to_25.txt src/genIsomoSigsOfTetrahedralTessellations 21 n \ > data/nonorientableTetrahedralTessellations_up_to_21.txt (requires regina and compilation, see "Compiling src/genIsomoSigsOfTetrahedralTessellations.cpp") * Step 2: Group the isomorphism signatures by isometry type. Also name them. sage -python \ src/identifyAndNameIsometricIsomoSigsOfTetrahedralTessellations.py \ data/orientableTetrahedralTessellations_up_to_25.txt \ otet%02d_%04d \ > data/namedIsometricOrientableTetrahedralTessellations_up_to_25.txt sage -python \ src/identifyAndNameIsometricIsomoSigsOfTetrahedralTessellations.py \ data/nonorientableTetrahedralTessellations_up_to_21.txt \ ntet%02d_%04d \ > data/namedIsometricNonorientableTetrahedralTessellations_up_to_21.txt The resulting files have lines of the form NameOfManifold listOfIsomorphismSignature IsometrySignature (requires regina, see http://regina.sourceforge.net/buildtips.html#sage, and a patched version of SnapPy, see "Patching SnapPy", both running in sage!) * Step 3: Generate the regina census files Besides the input and output file, the parameters specify the label of the root item in the regina file and the naming template for the tetrahedral manifolds. python src/genReginaCensusFile.py \ data/namedIsometricOrientableTetrahedralTessellations_up_to_25.txt \ "Tetrahedral Orientable Cusped Census" \ regina/tetrahedralOrientableCuspedCensus.rga python src/genReginaCensusFile.py \ data/namedIsometricNonorientableTetrahedralTessellations_up_to_21.txt \ "Tetrahedral Nonorientable Cusped Census" \ regina/tetrahedralNonorientableCuspedCensus.rga (requires regina) * Step 4: Generate the Snappy census files Besides the input and output file, the parameters specify the name of the SQL table and the naming template for the tetrahedral manifolds. python src/genSnappyCensusFile.py \ data/namedIsometricOrientableTetrahedralTessellations_up_to_25.txt \ tetrahedral_orientable_cusped_census \ snappy/tetrahedralOrientableCuspedCensus.sqlite python src/genSnappyCensusFile.py \ data/namedIsometricNonorientableTetrahedralTessellations_up_to_21.txt \ tetrahedral_nonorientable_cusped_census \ snappy/tetrahedralNonrientableCuspedCensus.sqlite (requires regina and SnapPy) * Step 5: Generate the file containing the morphisms Takes as argument several data files. python src/findMorphisms.py \ data/namedIsometricOrientableTetrahedralTessellations_up_to_24.txt \ data/namedIsometricNonorientableTetrahedralTessellations_up_to_19.txt \ > data/morphisms.txt (requires regina) ******************************************************************************* * Compiling src/genIsomoSigsOfTetrahedralTessellations.cpp * ******************************************************************************* **NEW (02/21/16)**: An updated version of the code compiling against Regina 5.0 can be found at src/genIsomoSigsOfTetrahedralTessellations_regina5.cpp. It can be compiled with cd src g++ genIsomoSigsOfTetrahedralTessellations_regina5.cpp \ -o genIsomoSigsOfTetrahedralTessellations \ `regina-engine-config --cflags --libs` To compile src/genIsomoSigsOfTetrahedralTessellations.cpp, use cd src g++ genIsomoSigsOfTetrahedralTessellations.cpp \ -o genIsomoSigsOfTetrahedralTessellations \ LIBRARY_AND_HEADER_PATHS -lgmp -lregina-engine where LIBRARY_AND_HEADER_PATHS are additional compiler options to locate where you installed the regina and gmp headers and libraries, e.g., -I/usr/local/include/regina (if you installed regina in /usr/local) -I/sw/include -L/sw/lib (if you are using fink). ******************************************************************************* * Patching SnapPy and compiling for sage * ******************************************************************************* Follow instructions on http://www.math.uic.edu/t3m/SnapPy/doc/development.html to get a copy of the SnapPy repository. Apply the patch src/SnapPyExposeCanonicalRetriangulation.patch, this might only work if you rollback to the correct changeset: hg update 90190899981d3ccb822a87a369693c6837e446bf hg import SnapPyExposeCanonicalRetriangulation.patch Now, follow the instructions to compile SnapPy: http://www.math.uic.edu/t3m/SnapPy/doc/development.html However, instead of "python setup.py install", use "sage -python setup.py install" so that it is compiled and installed under the sage environment.