jeanluct / braidlab

Matlab package for analyzing data using braids
GNU General Public License v3.0
23 stars 9 forks source link

Extract train track map from Toby's code #143

Closed jeanluct closed 5 years ago

jeanluct commented 6 years ago

John Lynch and I have been discussing the best way to take the output of trains in order to get the train track map. There are a few ways to go.

jeanluct commented 6 years ago

Working on this in branch iss143-extract-tt-map.

This turned out to be easier than I expected: tntype was already using Toby's code directly. I renamed it to train, and changed the output to a structure. Then I called the graph method TransitionMatrix from Toby's code, choosing trains::raw output. The output is a row of strings, since it can also be used to output LaTex or Maple, but this was easily converted to a Matlab matrix.

jeanluct commented 6 years ago

Ok, the fields transmat and ttmap as output by train are implemented in d71d450f! Now let's do some testing, and see if maybe it isn't worth adding other fields to the struct, while we're at it.

jeanluct commented 6 years ago

Looking at the output of frontend might suggest some things to add to braid.train's struct:

Enter number of braid strings: 4
Enter braid generators separated by spaces, ending with 0:
1 2 -3 0
> train
Now have an efficient fibred surface: Growth 2.29663, Entropy 0.831443
Isotopy class is Pseudo-Anosov
> print
Graph on surface with 4 peripheral loops:
Vertex number 1 with image vertex 2:
Edges at vertex are: 1 -1 7 
Region 1

Vertex number 2 with image vertex 4:
Edges at vertex are: 4 -4 -6 
Region 3

Vertex number 3 with image vertex 1:
Edges at vertex are: -2 8 2 
Region 1

Vertex number 4 with image vertex 3:
Edges at vertex are: -3 -5 6 3 
Region 2

Vertex number 5 with image vertex 5:
Edges at vertex are: -7 5 -8 
Region 1

Edge number 1 from vertex 1 to vertex 1:
Type: Peripheral about puncture number 1
Image is: 4 
Path (1 -> 1):  1 -1 

Edge number 2 from vertex 3 to vertex 3:
Type: Peripheral about puncture number 2
Image is: 1 
Path (1 -> 1):  -2 2 

Edge number 3 from vertex 4 to vertex 4:
Type: Peripheral about puncture number 3
Image is: 2 
Path (2 -> 2):  -3 3 

Edge number 4 from vertex 2 to vertex 2:
Type: Peripheral about puncture number 4
Image is: 3 
Path (3 -> 3):  -4 4 

Edge number 5 from vertex 5 to vertex 4:
Type: Main
Image is: -8 
Path (1 -> 2):  -2 

Edge number 6 from vertex 4 to vertex 2:
Type: Main
Image is: 8 5 -3 6 -4 -6 
Path (2 -> 3):  -3 

Edge number 7 from vertex 1 to vertex 5:
Type: Main
Image is: -6 3 -5 
Path (1 -> 1):  

Edge number 8 from vertex 3 to vertex 5:
Type: Main
Image is: 7 
Path (1 -> 1):  

Pseudo-Anosov Isotopy class
Vertex 1:
Gates are: {-1}, {7}, {1}
Infinitesimal edges join -1 to 7, 1 to 7
Vertex 2:
Gates are: {-4}, {-6}, {4}
Infinitesimal edges join -6 to -4, -6 to 4
Vertex 3:
Gates are: {8}, {2}, {-2}
Infinitesimal edges join -2 to 8, 2 to 8
Vertex 4:
Gates are: {-5, 6}, {3}, {-3}
Infinitesimal edges join -5 to -3, -5 to 3
Vertex 5:
Gates are: {5}, {-8}, {-7}
Infinitesimal edges join -8 to 5, -8 to -7, -7 to 5

What could be relevant to return:

Let's try a reducible braid:

> braid   
Enter number of braid strings: 4
Enter braid generators separated by spaces, ending with 0:
1 -2 0
> train
Isotopy class is Reducible
> print
Graph on surface with 4 peripheral loops:
Vertex number 1 with image vertex 2:
Edges at vertex are: 1 -1 5 
Region 1

Vertex number 2 with image vertex 4:
Edges at vertex are: 3 -3 7 -6 
Region 2

Vertex number 3 with image vertex 3:
Edges at vertex are: 4 -4 -7 
Region 3

Vertex number 4 with image vertex 1:
Edges at vertex are: -2 -5 6 2 
Region 1

Edge number 1 from vertex 1 to vertex 1:
Type: Peripheral about puncture number 1
Image is: 3 
Path (1 -> 1):  1 -1 

Edge number 2 from vertex 4 to vertex 4:
Type: Peripheral about puncture number 2
Image is: 1 
Path (1 -> 1):  -2 2 

Edge number 3 from vertex 2 to vertex 2:
Type: Peripheral about puncture number 3
Image is: 2 
Path (2 -> 2):  -3 3 

Edge number 4 from vertex 3 to vertex 3:
Type: Peripheral about puncture number 4
Image is: 4 
Path (3 -> 3):  -4 4 

Edge number 5 from vertex 1 to vertex 4:
Type: Main
Image is: -6 2 -5 
Path (1 -> 1):  

Edge number 6 from vertex 4 to vertex 2:
Type: Main
Image is: 5 -2 6 -3 -6 
Path (1 -> 2):  -2 

Edge number 7 from vertex 2 to vertex 3:
Type: Main
Image is: 6 3 7 
Path (2 -> 3):  3 

Reducible Isotopy class
The following main edges and their images constitute an invariant subgraph:
5 6 

The new info is the invariant subgraph. That's certainly worth outputting, if there is one (more than one?).

I also tried a finite-order example, but it doesn't seem to give new info.

There are also many other commands in frontend that could give useful info. Make sure to check those out.

For now, I guess the only thing would be to add the invariant subgraph?

jeanluct commented 6 years ago

Some hints about the difference between Reducible1 and Reducible2:

> help gates

GATES
=====

If the graph map held in memory has been found to represent a pseudo-Anosov
isotopy class, or a reducible class for which reducibility has been detected
because there is an efficient fibred surface with a vertex at which not all
of the gates are connected by infinitesimal edges, then this command will
display lists of gates and infinitesimal edges at each vertex. The gates
are listed in cyclic (anticlockwise) order around the vertex.

This is a description of Reducible2, I think.

jeanluct commented 5 years ago

Finally got around to adding this to the guide and merging into develop.

Closed branch iss143-extract-tt-map.

Could re-open this later if we decide to return more information from Toby's train code.