I am lucky to have studied a BEng in Computer Engineering, which has allowed me to write computer code for solving geometric problems. I first used Python and then move onto SageMath (previously known as SAGE). You can see some of my work below.

## SageMath package: GIT quotients of projective schemes by simple groups

I am currently working with my collaborators Patricio Gallardo, Han-Bom Moon and David Swinarski to develop algorithms and a software package in SageMath to describe the GIT quotients of projective schemes by simple groups. We hope to share our work by the end of 2019.

## Python package: Variations of GIT quotients

This page is a complement to the articles Moduli of cubic surfaces and their anticanonical divisors and Variations of geometric invariant quotients for pairs, a computational approach authored by Patricio Gallardo and Jesus Martinez-Garcia.

The output of our code describes the GIT non-stable and unstable loci of all GIT quotients of pairs (X,H) formed by a hypersurface and a hyperplane, or log pairs (X,D) formed by a Fano or Calabi-Yau hypersurface and a hyperplane section,** in any dimension and degree**. For instance, you could use our code to compute all GIT compactifications of log pairs (S,D) formed by a quartic surface S and an anti-canonical section D of S.

There are several moduli problems for which our code can be helpful, **please get in touch if you want to run it and need help**.

The code has been uploaded, together with this instructions, to the University of Bath Research Data Archive. You will be able to find the Variations of GIT quotients package v0.6.13 when my website does not exist any more.

The following instructions are intended for the readers that want to use the raw output of our program, and for the readers that want to run the program by themselves.

### License

The package VGIT-0.6.12, was created to complement these articles and we expect it can be used by other mathematicians to solve problems. The code is based on the theory developed in the article Variations of geometric invariant quotients for pairs, a computational approach and a rough idea of the algorithm can be found there. More detailed algorithms will appear in an upcoming article, together with further applications. The source code and data, but not the text of this article, are released under a Creative Commons CC BY-SA 4.0 license. If you make use of the source code and/or data in an academic or commercial context, you should acknowledge this by including a reference or citation to Variations of geometric invariant quotients for pairs, a computational approach —in the case of the code— or to Moduli of cubic surfaces and their anticanonical divisors —in the case of the data for cubic surfaces.

### Moduli of cubic surfaces and their anticanonical divisors

The output of the program with the parameters used in “Moduli of cubic surfaces and their anticanonical divisors” is available here in text format.

### Description of the output.

We describe the file so that it can be understood in the context our article. For a description of the algorithms that generate the output, we refer the reader to our article Variation of geometric invariant quotients for pairs a computational approach.

- The program returns a list $t_i$ including all GIT walls and a representative for each GIT chamber.
- The program returns the fundamental set of one-parameter subgroups. The program also tells you which one-parameter subgroups are not necessary for the GIT analysis.
- For each $t_i$, the program returns a list of one-parameter subgroups that generate non-stable maximal sets. The program recognizes the changes in the non-stable maximal sets with respect the previous $t_{i-1}$. There are three types of outputs:
- If a non-stable set of monomial has appeared for an earlier $t_i$, then it is denoted as “same”.
- If it becomes semistable, then it is denoted as “same but becomes semistable.”
- If it is a new set of monomials, then it is denoted as “new”.

- For each one-parameter subgroup that it is not denoted as “same”, the program returns the monomials in the maximal non-stable sets.
- The program recognizes if the configuration is semi-stable or not. In the former case, it returns the potential close orbit of that pairs.

### How to run the code.

We recommend the reader to sign up and use https://cloud.sagemath.com. Otherwise, it will be necessary to install Python 2.7 and the required libraries such as “Sympy”.

The raw code can be downloaded here, and it can be read in this link (open the link and then click in /PublicCode).

### Description of the package

For a precise description of the coded algorithms, we refer the reader to our article “Variation of geometric invariant quotients for pairs a computational approach.” The code in the folder VGIT has the following files:

- The file ” __init__.py” is required to make Python treat the directories as containing packages. Then, we can import the modules ‘VGIT’, ‘Hypersurfaces’, ‘Monomials’, and ‘OPSubgroups’.
- The file “Monomials.py” contains the sub-package Monomials with the class Monomials to deal with one monomial and the class MonFrozenSet to deal with a set of monomials. In this file, the reader can find the Hilbert_Mumford function and the function that generates the normalized one-parameter subgroups from a list of monomials.
- The file OPSubgroups.py contains the sub-package OPSubgroups with the class OPS and all the methods to work with them. It imports from the class “Monomials”, “associated1ps” and “MonFrozenSet”
- The file “VGIT.py” contains the metaclasses “Problem”, “Solution” and “Solution_t” that defines the VGIT problem and it stores the solutions.
- The file “Hypersurface.py” contains the classes “Problem” and VGIT.Hypersurfaces.Solution_t”. We store the VGIT problem in the class “Problem.” We store the solution to our VGIT problem in the class “VGIT.Hypersurfaces.Solution_t.”
- In the file run.py, the reader can change the dimension, and degree of the VGIT problem.