Source code for piel.visual.table.electronic.truth_table
from piel.conversion import convert_array_type
from piel.visual.table.latex import escape_latex
[docs]
def compose_fock_state_truth_table_latex(
df,
headers: list = None,
) -> str:
latex_table = "\\begin{tabular}{|c|" + "c|" * (len(df.columns)) + "}\n\\hline\n"
# Column headers
if headers is None:
headers = ["$|\\psi_{IN}\\rangle$"] + [
r"\\texttt{bits}(" + f"$\phi_{i}$)" for i in range(len(df.columns) - 1)
]
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():
# Convert each bit phase to the desired LaTeX representation
bit_phases = [
convert_array_type(row[f"bit_phase_{i}"], output_type="str")
for i in range(len(headers) - 1)
]
input_fock_state = row["input_fock_state_str"]
input_state = f"$|{input_fock_state}\\rangle$"
# Each row formatted for LaTeX
latex_row = f"{input_state} & " + " & ".join(bit_phases) + " \\\\\n\\hline\n"
latex_table += latex_row
# Closing LaTeX syntax
latex_table += "\\end{tabular}\n"
return latex_table