# Censuses of Platonic manifolds

The following manifolds were tabulated in A census of tetrahedral manifolds and A census of Platonic manifolds and augmented knotted trivalent graphs. An even larger census of Platonic manifolds can be downloaded here.

snappy.TetrahedralOrientableCuspedCensus = TetrahedralOrientableCuspedCensus without filters

  Iterator for the tetrahedral orientable cusped hyperbolic manifolds up to 25 tetrahedra, i.e., manifolds that admit a tessellation by regular ideal hyperbolic tetrahedra.

      >>> for M in TetrahedralOrientableCuspedCensus(solids = 5):
      ...     print(M, M.volume())
      otet05_00000(0,0) 5.07470803
      otet05_00001(0,0)(0,0) 5.07470803
      >>> TetrahedralOrientableCuspedCensus.identify(Manifold("m004"))
      otet02_00001(0,0)

snappy.TetrahedralNonorientableCuspedCensus = TetrahedralNonorientableCuspedCensus without filters

  Iterator for the tetrahedral non-orientable cusped hyperbolic manifolds up to 21 tetrahedra, i.e., manifolds that admit a tessellation by regular ideal hyperbolic tetrahedra.

      >>> len(TetrahedralNonorientableCuspedCensus)
      25194
      >>> list(TetrahedralNonorientableCuspedCensus[:1.3])
      [ntet01_00000(0,0)]

snappy.OctahedralOrientableCuspedCensus = OctahedralOrientableCuspedCensus without filters

  Iterator for the octahedral orientable cusped hyperbolic manifolds up to 7 octahedra, i.e., manifolds that admit a tessellation by regular ideal hyperbolic octahedra.

      >>> OctahedralOrientableCuspedCensus.identify(Manifold("5^2_1"))
      ooct01_00001(0,0)(0,0)

  For octahedral manifolds that are also the complement of an Augmented Knotted Trivalent Graph (AugKTG), the corresponding link is included:

      >>> M = OctahedralOrientableCuspedCensus['ooct04_00034']
      >>> M.link()
      <Link: 4 comp; 17 cross>

  The link can be viewed with `M.plink()`. To only see complements of AugKTGs, supply `isAugKTG = True`:

      >>> len(OctahedralOrientableCuspedCensus(isAugKTG = True))
      238
      >>> for M in OctahedralOrientableCuspedCensus(isAugKTG = True)[:5]:
      ...     print(M, M.link().DT_code(DT_alpha=True))
      ooct02_00001(0,0)(0,0)(0,0)(0,0) DT[mdbceceJamHBlCKgdfI]
      ooct02_00002(0,0)(0,0)(0,0) DT[lcgbcIkhLBJecGaFD]
      ooct02_00003(0,0)(0,0)(0,0) DT[icebbGIAfhcEdB]
      ooct02_00005(0,0)(0,0)(0,0) DT[hcdbbFHegbDAc]
      ooct04_00027(0,0)(0,0)(0,0)(0,0) DT[zdpecbBujVtiWzsLQpxYREadhOKCmFgN]

snappy.OctahedralNonorientableCuspedCensus = OctahedralNonorientableCuspedCensus without filters

  Iterator for the octahedral non-orientable cusped hyperbolic manifolds up to 5 octahedra, i.e., manifolds that admit a tessellation by regular ideal hyperbolic octahedra.

      >>> for M in OctahedralNonorientableCuspedCensus(solids = 3, betti = 3,cusps = 4):
      ...     print(M, M.homology())
      noct03_00007(0,0)(0,0)(0,0)(0,0) Z/2 + Z + Z + Z
      noct03_00029(0,0)(0,0)(0,0)(0,0) Z/2 + Z + Z + Z
      noct03_00047(0,0)(0,0)(0,0)(0,0) Z/2 + Z + Z + Z
      noct03_00048(0,0)(0,0)(0,0)(0,0) Z/2 + Z + Z + Z

snappy.CubicalOrientableCuspedCensus = CubicalOrientableCuspedCensus without filters

  Iterator for the cubical orientable cusped hyperbolic manifolds up to 7 cubes, i.e., manifolds that admit a tessellation by regular ideal hyperbolic octahedra.

      >>> M = TetrahedralOrientableCuspedCensus['otet05_00001']
      >>> CubicalOrientableCuspedCensus.identify(M)
      ocube01_00002(0,0)(0,0)

snappy.CubicalNonorientableCuspedCensus = CubicalNonorientableCuspedCensus without filters

  Iterator for the cubical non-orientable cusped hyperbolic manifolds up to 5 cubes, i.e., manifolds that admit a tessellation by regular ideal hyperbolic octahedra.

      >>> for M in CubicalNonorientableCuspedCensus[-3:]:
      ...     print(M, M.volume())
      ncube05_30945(0,0) 25.37354016
      ncube05_30946(0,0)(0,0) 25.37354016
      ncube05_30947(0,0)(0,0) 25.37354016

snappy.DodecahedralOrientableCuspedCensus = DodecahedralOrientableCuspedCensus without filters

  Iterator for the dodecahedral orientable cusped hyperbolic manifolds up to 2 dodecahedra, i.e., manifolds that admit a tessellation by regular ideal hyperbolic dodecahedra.

  Complement of one of the dodecahedral knots by Aitchison and Rubinstein:

      >>> M=DodecahedralOrientableCuspedCensus['odode02_00913']
      >>> M.dehn_fill((1,0))
      >>> M.fundamental_group()
      Generators:

      Relators:

snappy.DodecahedralNonorientableCuspedCensus = DodecahedralNonorientableCuspedCensus without filters

  Iterator for the dodecahedral non-orientable cusped hyperbolic manifolds up to 2 dodecahedra, i.e., manifolds that admit a tessellation by regular ideal hyperbolic dodecahedra.

      >>> len(DodecahedralNonorientableCuspedCensus)
      4146

snappy.IcosahedralOrientableClosedCensus = IcosahedralOrientableClosedCensus without filters

  Iterator for the icosahedral orientable closed hyperbolic manifolds up to 4 icosahedra, i.e., manifolds that admit a tessellation by regula finite hyperbolic icosahedra.

      >>> M = IcosahedralOrientableClosedCensus[0]
      >>> M.volume()
      4.68603427
      >>> M
      oicocld01_00000(1,0)

snappy.IcosahedralNonorientableClosedCensus = IcosahedralNonorientableClosedCensus without filters

  Iterator for the icosahedral non-orientable closed hyperbolic manifolds up to 3 icosahedra, i.e., manifolds that admit a tessellation by regular finite hyperbolic icosahedra.

      >>> list(IcosahedralNonorientableClosedCensus)
      [nicocld02_00000(1,0)]

snappy.CubicalOrientableClosedCensus = CubicalOrientableClosedCensus without filters

  Iterator for the cubical orientable closed hyperbolic manifolds up to 10 cubes, i.e., manifolds that admit a tessellation by regular finite hyperbolic cubes.

      >>> len(CubicalOrientableClosedCensus)
      69

snappy.CubicalNonorientableClosedCensus = CubicalNonorientableClosedCensus without filters

  Iterator for the cubical non-orientable closed hyperbolic manifolds up to 10 cubes, i.e., manifolds that admit a tessellation by regular finite hyperbolic cubes.

      >>> len(CubicalNonorientableClosedCensus)
      93

snappy.DodecahedralOrientableClosedCensus = DodecahedralOrientableClosedCensus without filters

  Iterator for the dodecahedral orientable closed hyperbolic manifolds up to 3 dodecahedra, i.e., manifolds that admit a tessellation by regular finite hyperbolic dodecahedra with a dihedral angle of 72 degrees.

  The Seifert-Weber space:

      >>> M = DodecahedralOrientableClosedCensus(solids = 1)[-1]
      >>> M.homology()
      Z/5 + Z/5 + Z/5

snappy.DodecahedralNonorientableClosedCensus = DodecahedralNonorientableClosedCensus without filters

  Iterator for the dodecahedral non-orientable closed hyperbolic manifolds up to 2 dodecahedra, i.e., manifolds that admit a tessellation by regular finite hyperbolic dodecahedra with a dihedral angle of 72 degrees.

      >>> DodecahedralNonorientableClosedCensus[0].volume()
      22.39812948