Source code for piel.visual.table.electro_optic.transitions
from piel.conversion import convert_array_type
from piel.visual.table.latex import escape_latex
from piel.visual.table.symbol import convert_tuple_to_pi_fractions
# Combined function to convert DataFrame to Fock state formatted LaTeX table
[docs]
def compose_optical_state_transition_dataframe_latex_table(
df,
headers: list = None,
) -> str:
latex_table = "\\begin{tabular}{|c|c|c|c|}\n\\hline\n"
# Column headers
if headers is None:
headers = [
"$(\\phi_{0},...,\phi_{N})$",
"$|\\psi_{IN}\\rangle$",
"$|\\psi_{OUT}\\rangle$",
"Target",
]
latex_table += (
" & ".join([f"\\textbf{{{escape_latex(header)}}}" for header in headers])
+ " \\\\\n\\hline\n"
)
# Rows in Fock state notation
for _, row in df.iterrows():
symbolic_phase = convert_tuple_to_pi_fractions(row["phase"])
# print(symbolic_phase)
phase = symbolic_phase # Convert tuple to string before escaping
input_fock_state = convert_array_type(
row["input_fock_state"], output_type="str"
)
output_fock_state = convert_array_type(
row["output_fock_state"], output_type="str"
)
input_state = (
f"$|{input_fock_state}\\rangle$" # Removes parentheses and adds |...⟩
)
output_state = f"$|{output_fock_state}\\rangle$"
target_mode_output = row["target_mode_output"]
# Each row formatted for LaTeX
latex_row = f"{phase} & {input_state} & {output_state} & {target_mode_output} \\\\\n\\hline\n"
latex_table += latex_row
# Closing LaTeX syntax
latex_table += "\\end{tabular}\n"
return latex_table