# Using Zigzag Persistent Homology to Detect Hopf Bifurcations in Dynamical Systems
## 3 Results
### Sel'kov Model  
Our last experiment tried to detect a bifurcation in the Sel'kov model [46], a model for glycolysis which is a process of breaking down sugar for energy. This model is defined by the system of differential equations,  
\[\dot{x} =-x+ay+x^{2}y\] \[\dot{y} =b-ay-x^{2}y\]  
where the overdot denotes a derivative with respect to time. In this system, \(x\) and \(y\) represent the concentration of ADP (adenosine diphosphate) and F6P (fructose-6-phosphate), respectively. This system has a Hopf bifurcation for select choices of parameters \(a\) and \(b\). This limit cycle behavior corresponds to the oscillatory rise and fall of the chemical compounds through the glycolysis process.  
For our experiments, we fixed \(a=0.1\) and varied the parameter \(b\). We generate 500 time points of the data ranging between 0 and 500 using odeint in python, with initial conditions \((0,0)\). We also removed the first 50 points to remove transients at the beginning of the model (this is sometimes referred to as a \"burn-in period\"). This data was constructed using full knowledge of the model; however, in practice, typically only one measurement function is obtained through an experiment, and then time-delay embedding is used to reconstruct the underlying system. To mimic this setup, we only used the time series corresponding to the \(x\)-coordinates from the model and used the delay embedding. These time series were then embedded using time-delay embedding with dimension \(d=2\) for the purpose of easy visualization and delay \(\tau=3\).  
The next step was to compute zigzag persistence as described in Section 2.3; however, due to the large number of points in the time-delay embeddings, this became computationally expensive. In order to reduce the computation time, we subsampled these point clouds using the furthest point sampling method (also called a greedy permutation) [47]. We subsampled down to only 20 points in each point cloud, computed the Rips complex zigzag for a fixed radius value of 0.25, and then computed the zigzag persistence. Figure 7 shows the zigzag filtration of Rips complexes along with the resulting  
Figure 6: **First and second rows**: generated time-series data and corresponding time-delay embeddings. **Bottom left**: The zigzag filtration using Rips complex with fixed radius of 0.72. Note that 2-simplices are not shown in the complexes. **Bottom middle**: The corresponding zigzag persistence diagram. **Bottom right**: Persistence diagram showing how the 1-dimensional off diagonal point varies depending on the Rips complex radius parameter choice.  
zigzag persistence diagram. In the zigzag persistence diagram, the point with the longest lifetime has coordinates \((2,8.5)\). Again, since these coordinates corresponded to the index in the zigzag sequence, this point corresponded to a feature appearing at \(R(X_{2})\) and disappearing at \(R(X_{8}\cup X_{9})\). Looking back at which values of \(b\) were used to generate these point clouds, we see that this corresponded to a feature appearing at \(b=0.45\) and disappearing at \(b=0.8\). For the fixed parameter value of \(a=0.1\), the Sel'kov model had a limit cycle approximately between the parameter values \(0.4\leq b\leq 0.8\)[48]. Our method picked up approximately that same range.  
These results use the \(x\)-coordinates of the model; however, the same results can be obtained using the \(y\)-coordinates and a slightly larger radius value.