There has been a delay this time. This week I have worked on cleaning the code and I am trying to get to the standard required as well trying to clear the bugs which come along. I have been studying the theory on plotting (not really the theory but the components required for implementation). The inspiration mainly comes from Graph theory and network flows. I have been trying to understand what is going in the Spherogram package where they try to generate the data required for the plot and use plink to get the diagram using this data. The focus has been on to achieve the data they have got and use it via the sage methods rather than directing it to plink. The code is mainly present in the orthogonal.py file and they have used orthogonal representations to generate the plot. The one thing which is basic and still not clear is what are they considering as vertices. While I was working on this, I and Miguel had a meeting on Monday and we had some issues to be resolved before we moved forward. I have resolved the issues which were arising in the seifert_to_braid method and have added the __repr__ method. The issue with seifert_to_braid was with the ordering of the seifert_circles. Previously the idea was to find the intersection of the seifert circles with others (as initially we had used the idea of consecutive numbers for naming the edges) by adding a one and subtracting and checking on the intersection. But I over looked this part when I worked on the extension to links and it stuck me here, that I had to even edit this. Now I have edited this part and now we check for the intersection of seifert circles with the pd code, remove all the crossings which share the seifert circle numbering and at the same time select one of the crossings which share the seifert circle and construct a variable which had only parts other than the seifert circle. Now we use this to find the intersection with the other seifert circles and so on and so forth, in this way we order the seifert circles. The __repr__ method has been straight forward. I have removed the method smallest equivalent and replaced the name of the link_number with ncomponents.
Moving on I worked with Jones polynomial, I had this doubt whether the smoothing would depend on the orientation of the crossing. The answer was that it does not and that made my things easy as I had to just refine the earlier code which took into consideration the orientation of the crossing. So now I can say atleast the Kaufmann’s polynomial works fine, to get to the Jones polynomial, I would have to replace the polynomial variable by t^(1/4) for which I have been searching around with no answers. I would be working on the plot methods this week and try to see if I can get something out.
This is the last week before the pencils down, however I will try to continue the work and blog accordingly. I have learnt a lot during these two months, it has been a fascinating journey and I would be continuing my work post GSoC on making things better. I hope you have enjoyed reading the posts (sometimes I have not moved into the details, because I wanted to keep it simple). I will be continuing to blog my posts and hopefully the work till now can get me across the final evaluation.
I would like to leave you with some examples of Jones polynomial (without the t^(1/4) substitution) and also the work till now.
sage: L = link.Link(B([-1, 2, -1, 2, -3, -2, 1, -2, -3])) sage: L.alexander_polynomial() -2*t^4 + 5*t^3 - 2*t^2 sage: L.jones_polynomial() t^24 - t^20 + t^16 - 2*t^12 + t^8 - t^4 + 2 sage: L = link.Link(B([-1, -1, -2, 1, 3, -2, 3])) sage: L.alexander_polynomial() -2*t^3 + 5*t^2 - 2*t sage: L.jones_polynomial() t^16 - t^12 + t^8 - 2*t^4 + 2 - t^-4 + t^-8 The white-head link: sage: l5 = [[1,8,2,7],[8,4,9,5],[3,9,4,10],[10,1,7,6],[5,3,6,2]] sage: L = link.Link(PD_code = l5) sage: L.jones_polynomial() t^14 - 2*t^10 + t^6 - 2*t^2 + t^-2 - t^-6 The Right Trefoil sage: L = link.Link(B([1, 1, 1])) sage: L.jones_polynomial() t^-4 + t^-12 - t^-16 The Left Trefoil sage: L = link.Link(B([-1, -1, -1])) sage: L.jones_polynomial() -t^16 + t^12 + t^4 The Hopf Link sage: l1 = [[1,4,2,3],[4,1,3,2]] sage: L = link.Link(PD_code = l1) sage: L.jones_polynomial() -t^10 - t^2
And here is the link for the latest code :
Thanks for reading through.
PS: I mentioned in the previous blog that 3d input was the priority, but as 3d inputs and plot were more related, I choose to work on the latter. 3d inputs require projecting the lines into 2d but I have not found any methods around which would make things easier. Plot looks to be more achievable. Yet I will work on the 3d inputs but for now the plot seems more interesting.