DOI: 10.5281/zenodo.14648180
title: Spin and Density Modes in a Binary Quantum Fluid of Light

description: ## Data for "Spin and Density Modes in a Binary Fluid of Light" 

### Data for fig. 2

$I_+$ and $I_-$ output intensity, after subtraxtion of an unmodulated reference image, when applying a transverse perturbation $k_p$ = 21.024 rad/mm. Beam power = 30mW, $T_\text{cell}$ = 165 °C (cell heating power = 15.6 W). The background fluid is linearly vertically polarized. <br>If we note $h$ the height of the images and $w$ their width (in pixels), the data array dimensions are (2,$h$,$w$) with the first element being $I_+$ (of size $h\times w$) and the second being $I_-$ (of size $h\times w$). To obtain the density and spin images, one simply has to take the sum and the difference of those two images.- im2D_sigmaPsigmaM_kp21024_2Comp_30mW_-2p2GHz_polaPrLinPara_kpmax8e4_15p6W.npy : the perturbation is linearly polarized, parallel to the background's polarization.- im2D_sigmaPsigmaM_kp21024_2Comp_30mW_-2p2GHz_polaPrLinPerp_kpmax8e4_15p6W.npy : the perturbation is linearly polarized, perpendicular to the background's polarization.

### Simulation code for fig. 3 (b-g)We use CNLSE_1d from the [NLSE package](https://github.com/Quantum-Optics-LKB/NLSE). The script bragg_2Comp_1d.py gives an example n how to generate and analyse the numerical results of fig. 3.

### Data for fig. 4

For both datasets : "low $I_0/I_\text{sat}$" :  {20 mW, $\Delta$ = -1.8 GH, $T_\text{cell}$ = 165 °C} and "high $I_0/I_\text{sat}$" : {908 mW, $\Delta$ = -2.0 GH, $T_\text{cell}$ = 140 °C}. <br>For instance to load the "low $I_0/I_\text{sat}$" data :```pythonend_filename = '2CompMartone_20mW_-1p8GHz_polaPrCircL_kpmax8e4_15p6W'```

- array of input perturbation momentum $k_p$. Size: 400.``` pythonkp_ar = np.linspace(1300, 8e4, 400)```

- Raw $I_+$ (i.e $\sigma_+$) and $I_-$ (i.e $\sigma_-$) images, for all $k_p$. Each individual image is of size height $h$ and width $w$. Size : (400,2,$h$,$w$) ``` pythonall_im = np.load(f'allimg_{end_filename}npy').astype(np.float32)allim_sigmaP = all_im[0] # all I+allim_sigmaM =  all_im[1] # all I-```- Reference unmodulated $\sigma_+$ and $\sigma_-$ images. Size (2,$h$,$w$) ``` pythonim_ref = np.load(f'refimage_{end_filename}.npy').astype(np.float32)```

 - Density and spin images for all $k_p$, integrated vertically (1D), after subtraction and division by reference image. And corresponding 1D fourier transform. Size for both: (400,2,$h$)

 ```pythonallim_1D = np.load(f'allim1D_{end_filename}.npy')allim_Dens_1D, allim_Spin_1D = allim_1D[0], allim_1D[1]

ft1D_allim = np.load(f'FT1D_allimg_{end_filename}.npy')ft_dens, ft_spin = ft1D_allim[0], ft1D_allim[1] ```

 - Density and spin contrast, and output $k_p$ for density and spin images. The output $k_p$ is slightly different from input $k_p$ because of horizontal defocusing (about 5% difference). Size : (4,400)  ```python  data_contrast = np.load(f'contrastFromSinefit_kp_{end_filename}.npy')  kp_ar_dens = data[0] # output kp measured for density images  kp_ar_spin = data[1] # output kp measured for spin images  contrast_dens = data[2] # density contrast measured at density output values of kp  contrast_spin = data[3] # spin contrast measured at density output values of kp``` 

- Dict containing data to plot final figure```pythonresults = np.load(f'fitResults_{end_filename}.npy', allow_pickle=True).item()results = {'contrast_dens_smoothed':contrast_dens_smoothed, # smoothed density contrast           'contrast_spin_smoothed':contrast_spin_smoothed, # smoothed spin contrast           'ind_extr_dens' : ind_extr_dens, # indices of density contrast extrema           'ind_extr_spin' : ind_extr_spin,  # indices of spin contrast extrema           'kp_extr_d' : kp_extr_d, # output density kp values corresponding to contrast extrema           'kp_extr_s' : kp_extr_s, # output spin kp values corresponding to contrast extrema           'omega_d' : omega_d, # reconstructed density dispersion from extrema of density contrast           'omega_s' : omega_s, # reconstructed spin dispersion from extrema of spin contrast           'Dn_d_fit' : Dn_d_fit, # fitted value of density nonlinear index (interactions)            'Dn_s_fit' : Dn_s_fit, # fitted value of spin nonlinear index (interactions)            'sigma_Dn_d' : sigma_Dn_d, # fit error on Dn_d           'sigma_Dn_s' : sigma_Dn_s, # fit error on Dn_s           'err_d' : err_d, # global error on density dispersion fit           'err_s' : err_s, # global error on spin dispersion fit           'sigma_extr_d' : sigma_extr_d, # uncertainty on extrema of density contrast  position           'sigma_extr_s' : sigma_extr_s} # uncertainty on spin of density contrast  position``` ### Data for fig. 5

The python dictionary "summary_-2p2GHz_cdcs_polaPrCircL_15p6W.npy" contains the fit results of $\Delta n_d=c_d^2$ and $\Delta n_s=c_s^2$ for a ramp of the input beam power. Measurement taken at $\Delta$ = -2.2 GHz and $T_\text{cell}$ = 165 °C. <br>The raw data were exploited with the same process as those presented in fig.3 . They are available upon request (heavy). ```pythonresults = np.load('summary_-2p2GHz_cdcs_polaPrCircL_15p6W.npy', allow_pickle=True).item() # load the dict containing the resultsDn_d = results['Dn_d'] # fitted density interactionDn_s = results['Dn_s'] # fitted spin interactiosigma_Dn_d = results['sigma_Dn_d'] # density interaction fit uncertainty sigma_Dn_s = results['sigma_Dn_s'] # spin interaction fit uncertainty intensities_in = results['intensities'] # input intensityall_powers = results['beam_power'] # input power```We also provide the script that plots the data of fig. 5 : cdcs_ratio.py .