DOI: 10.5281/zenodo.6788172
title: Dataset for Direct Geometric Probe of Singularities in Band Structure

description: Included here is the processed data illustrated in the figures of both the main text, and the supplemental material. Below is a description of each file's contents. <strong>Figure2Dcode.m</strong> contains the MATLAB code that generates Figure 2D of the main text. It takes the band populations inferred from five iterations of measurements, and calculates the means and standard errors for data taken at each theta as defined in the main text. <strong>Figure2Ddata.csv</strong> contains the data illustrated in Figure 2D of the main text. The data provided are normalized band populations, such that the value 1 corresponds to the entire atom number in the sample. The rows provide the band index; the first row of data corresponds to the n=1 band, the second row corresponds to the n=2 band, etc. The columns provide the measured turning angle in units of radians; the first column corresponds to a turning angle of zero, and the angle is incremented by pi/12 radians for each column that follows. Row 5 is the error for the n=1 population, row 6 is the error for the n=2 population, and row 7 is the error on the sum of the population in bands with index not equal to 1 or 2. <strong>Figure3Bcode.ipynb</strong> contains the jupyter notebook that generates Figure 3B of the main text. It takes the band populations inferred from four iterations of measurements, and calculates the means and standard errors for data taken for each intermediate point along K - M - K'. For this plot, the x-axis is chosen to be the intermediate quasi-momenta, and different colors are used to differentiate between different acceleration times. <strong>Figure3Bdata.csv</strong> contains the data illustrated in Figure 3B of the main text. The five columns correspond to the five different trajectory evolution times (0.5, 0.9, 1.3, 1.7, 2.1 milliseconds) shown in the Figure 3B. The first nine rows correspond to the nine trajectory midpoint positions in the Brillouin zone, as showed in Figure 3A; the first row corresponds to a midpoint at <strong>K</strong>. The next nine rows are the errors on the measurements. <strong>Figure4Ccode.m</strong> contains the MATLAB code that generates Figure 4C of the main text. It takes the band populations inferred from twelve iterations of measurements, each at a different theta as defined in the main text, and calculate the means and standard errors for data taken at each theta. <strong>Figure4Cdata.csv </strong>contains the data illustrated in Figure 4C of the main text. The data provided are normalized band populations, such that the value 1 corresponds to the entire atom number in the sample. The rows provide the band index; the first row of data corresponds to the n=1 band, the second row corresponds to the n=2 band, etc. The columns provide the measured turning angle in units of radians; the first column corresponds to a turning angle of zero, and the angle is incremented by pi/6 radians for each column that follows. Row 11 is the error for the n=3 population, row 12 is the error for the n=4 population, and row 13 is the error on the sum of the population in bands with index not equal to 3 or 4. <strong>FigureS3Bcode.m</strong> contains the MATLAB code that generates Figure S3B of the main text. It takes the band populations inferred from seven iterations of measurements, and calculates the means and standard errors for data taken for each hold time at quasi-momentum Q as defined in the main text. The result is then fitted to a sine with exponentially decaying envelope. <strong>push_ramp.py </strong>(in<strong> Full Hamiltonian simulation.zip</strong>) starts with an initial state and evolves it according to the discretized schrödinger equation along the path in q-space. The Hamiltonian is calculated in <strong>basic_fcts.py</strong>. The final state is projected on the eigenstates at the final q to extract the band population. Different time intervals are used to obtain all the data. A decay to account for coherence loss is added. <strong>FigureS3data.csv </strong>contains the data illustrated in Figure 3 of the supplementary material. The first row is the data values, and the second row are the error bars. <strong>FigureS4Bcode.m</strong> contains the MATLAB code that generates Figure S4B of the main text. It takes the band populations inferred from four iterations of measurements, and calculates the means and standard errors for data taken for each intermediate point along K - M - K'. For this plot, the x-axis is chosen to be acceleration time, and different colors are used to differentiate between different intermediate points. <strong>push_ramp.py </strong>(in<strong> Full Hamiltonian simulation.zip</strong>) starts with an initial state and evolves it according to the discretized schrödinger equation along the paths in q-space. The Hamiltonian is calculated in <strong>basic_fcts.py</strong>. The final state is projected on the eigenstates at the final q to extract the band population. Different time intervals are used to obtain all the data. <strong>FigureS4data.csv </strong>contains the data illustrated in Figure 4 of the supplementary material. The first five rows are the normalized ground band population for five different trajectory mid points on the <strong>K</strong> - <strong>M</strong> - <strong>K'</strong> line of the Brillouin zone.; the first row is for a midpoint at <strong>K</strong>, and the fifth row is for a midpoint at <strong>M</strong>. The columns give the trajectory traversal times; the first column corresponds to a traversal time of 0.1 ms and each column corresponds to a new traversal time incremented by 0.2 ms. Rows 6-10 are the error bars for the measurements. <strong>FigureS5Bcode.zip</strong> contains the codes that generate Figure S5B of the main text. For each subplots in Fig.S5B, the corresponding MATLAB code in the zip file takes the band populations inferred from three iterations of measurements, and calculate the means and standard errors for data taken at each acceleration time. <strong>FigureS5Bdata.csv </strong>contains the data illustrated in Figure 5B of the supplementary material. Rows 1-20 correspond to subpanel (iii) in the Figure S5 of the supplementary material. Rows 21-40 correspond to subpanel (ii) in the Figure S5 of the supplementary material. Rows 31-60 correspond to subpanel (i) in the Figure S5 of the supplementary material. Rows 1-10 correspond to the band index and give the normalized band population; row 1 corresponds to band index n=1 and row 10 corresponds to band index n=10. Rows 21-30 correspond to the band index and give the normalized band population; row 21 corresponds to band index n=1 and row 30 corresponds to band index n=10. Rows 41-50 correspond to the band index and give the normalized band population; row 41 corresponds to band index n=1 and row 50 corresponds to band index n=10. Rows 11-20 (31-40) [51-60] give the error in the band populations for measurements in panel iii (ii) [i]. <strong>FigureS5Cdata.csv </strong>contains the data illustrated in Figure 5C of the supplementary material. The first (second) column is the vertical (horizontal) axis. The fourth (third) column is the error in the points on the vertical (horizontal) axis. <strong>push_ramp.py </strong>(in<strong> Full Hamiltonian simulation.zip</strong>) starts with an initial state and evolves it according to the discretized schrödinger equation along the path in q-space. The Hamiltonian is calculated in <strong>basic_fcts.py</strong>. In figure S6A, at each point in time shown the state is projected onto the instantaneous eigenbasis and the different band populations are extracted. In figure S6B and figure S6C, the whole experiment sequences corresponding to figure 2 and figure 4 in the main text are simulated, and the final population obtained is plotted, with the measurement results copied for reference. <strong>FigureS7code.nb</strong> contains the mathematica notebook that generate Figure S7 of the main text. This code uses the two-band model described in the supplemental material to perform simulation. <strong>Image_fitting.zip</strong> contains the MATLAB code and functions that were used to analyze the band mapping images. <strong>multiboxFit_v7_1.m</strong> is the main code that uses other MATLAB functions in the zip file. Overall, it takes absorption images as input, finds the position of each peak (<strong>BoxGenerator_v1_0.m</strong>), fit for the population in each peak in the images (<strong>createFit2D.m</strong>), assign the correct band number given the final quasi-momentum in the sequence (<strong>BoxesBandsThing_v2.m</strong>), and finally plot the inferred band populations, along with a visualization of the original images overlain with a Brillouin zone (<strong>PlotBZ_v2.m</strong>). The result of fits are saved in a separate file that are accessed by other analysis codes. Figure S2 and Figure S5C are also generated with this code. Additional codes <strong>Q_path_BZ.py</strong>,<strong> group_velo.py </strong>&<strong> diffr_img.py</strong> are included in<strong> Full Hamiltonian simulation.zip</strong> to ensure the correct functionality of the codes included.