Database of cylinder diagrams and quadratic permutations¶
Databases for translation surfaces.
This file contain different databases (with different implementations) for algorithms related to translation surfaces:
- structure of Strebel differentials for quadratic differentials in order to differentiate
- database of separatrix and cylinder diagrams up to isomorphism
- database of volume of connected components of Abelian strata
-
class
surface_dynamics.databases.flat_surfaces.
CylinderDiagrams
(path=None, name=None, read_only=True)[source]¶ Bases:
surface_dynamics.databases.flat_surfaces.GenericRepertoryDatabase
Database of cylinder diagrams.
The database consists of several files with the following name convention: “stratum-component-ncyls”. As an example, the list of 3-cylinder diagrams in the odd component of H(2,2) is named “2_2-odd-3”.
EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import CylinderDiagrams sage: import os sage: C = CylinderDiagrams() sage: a = AbelianStratum(3,1,1,1).unique_component() sage: C.filename(a, 2) 'cyl_diags-3_1_1_1-c-2' sage: os.path.isfile(os.path.join(C.path, C.filename(a, 2))) True sage: l = list(C.get_iterator(a, 2)) sage: l[0] (0,9)-(0,5,7,8,6) (1,6,2,5,3,8,4,7)-(1,2,3,9,4) sage: l[0].ncyls() 2 sage: l[0].stratum() H_4(3, 1^3)
-
count
(comp, ncyls=None)[source]¶ Returns the number of cylinder diagrams for a stratum or a component of stratum with given number of cylinders.
-
default_name
= 'cylinder_diagrams'¶
-
default_path
= '/opt/sage/local/lib/python2.7/site-packages/surface_dynamics/databases'¶
-
filename
(comp, ncyls)[source]¶ Returns the name of the file for the given component
comp
and the given of number of cylidersncyls
.EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import CylinderDiagrams sage: C = CylinderDiagrams() sage: C.filename(AbelianStratum(4).odd_component(), 3) 'cyl_diags-4-odd-3' sage: C.filename(AbelianStratum(3,3).hyperelliptic_component(), 2) 'cyl_diags-3_3-hyp-2'
-
get_iterator
(comp, ncyls=None)[source]¶ Returns an iterator over the list of cylinder diagrams for the component
comp
read from the database.INPUT:
comp
- a component of stratumncyls
- number of cylinders
EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import CylinderDiagrams sage: import os sage: C = CylinderDiagrams(tmp_dir(), read_only=False) sage: A = AbelianStratum(2) sage: a = A.unique_component() sage: C.update(A) sage: list(C.get_iterator(a)) [(0,2,1)-(0,2,1), (0,1)-(0,2) (2)-(1)] sage: C.clean() sage: C.get_iterator(a) Traceback (most recent call last): ... ValueError: not in the database
-
has_component
(comp)[source]¶ Test wheter the database has the component
comp
.EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import CylinderDiagrams sage: import os sage: C = CylinderDiagrams(tmp_dir(), read_only=False) sage: C.clean() sage: a1 = AbelianStratum(4).odd_component() sage: a2 = AbelianStratum(1,1,1,1).unique_component() sage: C.has_component(a1) False sage: C.has_component(a2) False sage: C.update(AbelianStratum(4)) sage: C.has_component(a1) True sage: C.has_component(a2) False sage: C.has_component(-19) Traceback (most recent call last): ... AssertionError: the argument must be a component of stratum of Abelian differentials
-
has_stratum
(stratum)[source]¶ Test whether the database contains the data for a given stratum.
EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import CylinderDiagrams sage: import os sage: C = CylinderDiagrams(tmp_dir(), read_only=False) sage: C.clean() sage: a1 = AbelianStratum(4) sage: a2 = AbelianStratum(1,1,1,1) sage: C.has_stratum(a1) False sage: C.has_stratum(a2) False sage: C.update(AbelianStratum(4)) sage: C.has_stratum(a1) True sage: C.has_stratum(a2) False sage: C.has_stratum(1) Traceback (most recent call last): ... AssertionError: the argument must be a stratum of Abelian differential
-
list_strata
()[source]¶ List available strata in that database.
EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import CylinderDiagrams sage: import os sage: C = CylinderDiagrams(tmp_dir(), read_only=False) sage: C.clean() sage: C.list_strata() [] sage: C.update(AbelianStratum(1,1)) sage: C.list_strata() [H_2(1^2)] sage: C.update(AbelianStratum(2)) sage: C.list_strata() [H_2(2), H_2(1^2)]
-
update
(stratum, verbose=False)[source]¶ Compute once for all the given cylinder diagrams of the given
stratum
.Warning:
Depending on the dimension of the stratum, it may be very long!
EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import CylinderDiagrams sage: C = CylinderDiagrams(tmp_dir(), read_only=False) sage: C.update(AbelianStratum(4), verbose=True) computation for H_3(4) ncyls = 1 2 cyl. diags for H_3(4)^odd 1 cyl. diags for H_3(4)^hyp ncyls = 2 4 cyl. diags for H_3(4)^odd 2 cyl. diags for H_3(4)^hyp ncyls = 3 4 cyl. diags for H_3(4)^odd 2 cyl. diags for H_3(4)^hyp sage: sorted(os.listdir(C.path)) ['cyl_diags-4-hyp-1', 'cyl_diags-4-hyp-2', 'cyl_diags-4-hyp-3', 'cyl_diags-4-odd-1', 'cyl_diags-4-odd-2', 'cyl_diags-4-odd-3']
-
-
class
surface_dynamics.databases.flat_surfaces.
GenericRepertoryDatabase
(path=None, name=None, read_only=True)[source]¶ Database that consists of a list of files in a repertory.
-
clean
()[source]¶ Clean the database.
EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import CylinderDiagrams sage: C = CylinderDiagrams(tmp_dir(), "cylinder_diagrams", read_only=False) sage: C.update(AbelianStratum(4)) sage: import os sage: sorted(os.listdir(C.path)) ['cyl_diags-4-hyp-1', 'cyl_diags-4-hyp-2', 'cyl_diags-4-hyp-3', 'cyl_diags-4-odd-1', 'cyl_diags-4-odd-2', 'cyl_diags-4-odd-3'] sage: C.clean() sage: os.listdir(C.path) []
-
default_name
= 'generic_db'¶
-
default_path
= l'/home/vincent/.sage/temp/mangouste/1055'¶
-
-
class
surface_dynamics.databases.flat_surfaces.
IrregularComponentTwins
(path=None, name=None, read_only=True)[source]¶ Bases:
surface_dynamics.databases.flat_surfaces.GenericRepertoryDatabase
Twin data of generalized permutation of irregular components of strata of Abelian differentials.
-
count
(stratum)[source]¶ Returns the number of twins for that stratum.
EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import IrregularComponentTwins sage: D = IrregularComponentTwins() sage: Q = QuadraticStratum(12) sage: len(D.get(Q)) 6993 sage: D.count(Q) 6993
-
default_name
= 'generalized_permutation_twins'¶
-
default_path
= '/opt/sage/local/lib/python2.7/site-packages/surface_dynamics/databases'¶
-
filename
(stratum)[source]¶ Returns the name of the file for the given component.
EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import IrregularComponentTwins sage: D = IrregularComponentTwins() sage: D.filename(QuadraticStratum(12)) 'twins-12-irr' sage: D.filename(QuadraticStratum(2,2)) Traceback (most recent call last): ... AssertionError: the stratum has no irregular component
-
get
(stratum)[source]¶ Get the list of twins for the stratum of quadratic differentials
stratum
.EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import IrregularComponentTwins sage: D = IrregularComponentTwins() sage: l = D.get(QuadraticStratum(6,3,-1)) sage: l[0][0] [(1, 8), (1, 5), (1, 4), (0, 4), (0, 3), (1, 7), (1, 6)] sage: l[0][1] [(1, 2), (1, 3), (1, 0), (1, 1), (0, 2), (0, 1), (0, 6), (0, 5), (0, 0)] sage: len(l) 1634
-
has_stratum
(stratum)[source]¶ Test whether the component is in the database.
EXAMPLES:
sage: from surface_dynamics.all import * sage: from surface_dynamics.databases.flat_surfaces import IrregularComponentTwins sage: D = IrregularComponentTwins() sage: D.has_stratum(QuadraticStratum(12)) True
-
list_strata
()[source]¶ Returns the list of components for which the list of twins is stored.
EXAMPLES:
sage: from surface_dynamics.databases.flat_surfaces import IrregularComponentTwins sage: G = IrregularComponentTwins() sage: G.list_strata() [Q_3(9, -1), Q_3(6, 3, -1), Q_4(12), Q_3(3^3, -1), Q_4(6^2), Q_4(9, 3), Q_4(6, 3^2), Q_4(3^4)]
-