Skip to content

Commit

Permalink
finalize md table and cleanup code
Browse files Browse the repository at this point in the history
  • Loading branch information
shenvitor committed Aug 2, 2024
1 parent 4eb21db commit 285a616
Showing 1 changed file with 38 additions and 108 deletions.
146 changes: 38 additions & 108 deletions docs/ampform/LambdaKpi0.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"source_hidden": true
},
"mystnb": {
"code_prompt_show": "Import Python libraries"
},
Expand All @@ -38,6 +35,7 @@
"import warnings\n",
"from collections import defaultdict\n",
"from fractions import Fraction\n",
"from textwrap import dedent\n",
"\n",
"import ampform\n",
"import graphviz\n",
Expand All @@ -47,7 +45,7 @@
"import qrules\n",
"from ampform.dynamics.builder import RelativisticBreitWignerBuilder\n",
"from ampform.io import aslatex, improve_latex_rendering\n",
"from IPython.display import Markdown, Math, display\n",
"from IPython.display import Markdown, Math\n",
"from qrules.particle import Particle, Spin, create_particle, load_pdg\n",
"from tensorwaves.data import (\n",
" SympyDataTransformer,\n",
Expand Down Expand Up @@ -83,129 +81,61 @@
"execution_count": null,
"metadata": {
"tags": [
"scroll-output",
"full-width",
"hide-input"
]
},
"outputs": [],
"source": [
"particles = [\"Lambda\", \"K+\", \"pi0\", \"gamma\", \"p\"]\n",
"latex_particle_names = {\n",
" \"Lambda\": r\"$\\Lambda$\",\n",
" \"K+\": r\"$K^+$\",\n",
" \"pi0\": r\"$\\pi^0$\",\n",
" \"gamma\": r\"$\\gamma$\",\n",
" \"p\": \"p\",\n",
"}\n",
"def generate_markdown_table(particles: list[str]):\n",
" table_md = dedent(r\"\"\"\n",
" | Particle | Name | PID | $J^{PC} (I^G)$ | $I_3$ | $M$ | $\\Gamma$ | $Q$ | $S$ | $B$ |\n",
" | :------- |------|-----|----------------|-------|-----|----------|-----|-----|-----|\n",
" \"\"\")\n",
" for name in particles:\n",
" p = particle_db[name]\n",
" table_md += f\"| ${p.latex}$ | `{p.name}` | {p.pid} | {jpc_ig(p)} | {i_3(p)} | {p.mass:.3g}| {p.width:g} | {p.charge} |{p.strangeness} | {p.baryon_number}|\\n\"\n",
" return table_md\n",
"\n",
"\n",
"def format_parity(parity: int | None) -> str:\n",
" if parity is None:\n",
" return \"\"\n",
" if parity == -1:\n",
" return \"-\"\n",
" if parity == 1:\n",
" return \"+\"\n",
" return str(parity)\n",
"def jpc_ig(particle: Particle) -> str:\n",
" j = format_fraction(particle.spin)\n",
" p = format_parity(particle.parity)\n",
" c = format_parity(particle.c_parity)\n",
" if particle.isospin is None:\n",
" return f\"${j}^{{{p}{c}}}$\"\n",
" i = format_fraction(particle.isospin.magnitude)\n",
" g = format_parity(particle.g_parity)\n",
" return rf\"${j}^{{{p}{c}}} \\; ({i}^{{{g}}})$\"\n",
"\n",
"\n",
"def format_fraction(value: Fraction | None) -> str | None:\n",
" if value is None:\n",
" return None\n",
" if value.denominator == 1:\n",
" return str(value.numerator)\n",
" return rf\"\\frac{{{value.numerator}}}{{{value.denominator}}}\"\n",
"def i_3(particle: Particle) -> str:\n",
" if particle.isospin is None:\n",
" return \"N/A\"\n",
" return f\"${format_fraction(particle.isospin.projection)}$\"\n",
"\n",
"\n",
"def format_fraction_isospin3(value: Fraction | None) -> str | None:\n",
" if value is None:\n",
" return None\n",
"def format_fraction(value: float) -> str:\n",
" value = Fraction(value)\n",
" if value.denominator == 1:\n",
" return str(value.numerator)\n",
" return rf\"$\\frac{{{value.numerator}}}{{{value.denominator}}}$\"\n",
"\n",
"\n",
"def particle_extract(name: str) -> dict:\n",
" particle = particle_db[name]\n",
"\n",
" isospin_magnitude_value = (\n",
" Fraction(particle.isospin.magnitude) if particle.isospin is not None else None\n",
" )\n",
" isospin_magnitude_latex = (\n",
" format_fraction(isospin_magnitude_value)\n",
" if isospin_magnitude_value is not None\n",
" else \"0\"\n",
" if particle.isospin and particle.isospin.magnitude == 0\n",
" else \"None\"\n",
" )\n",
"\n",
" isospin_projection_value = (\n",
" Fraction(particle.isospin.projection) if particle.isospin is not None else None\n",
" )\n",
" isospin_projection_latex = (\n",
" format_fraction_isospin3(isospin_projection_value)\n",
" if isospin_projection_value is not None\n",
" else \"0\"\n",
" if particle.isospin and particle.isospin.projection == 0\n",
" else \"None\"\n",
" )\n",
"\n",
" spin_fraction_value = Fraction(particle.spin) if particle.spin is not None else None\n",
" spin_latex = (\n",
" format_fraction(spin_fraction_value)\n",
" if spin_fraction_value is not None\n",
" else \"0\"\n",
" if particle.spin == 0\n",
" else \"None\"\n",
" )\n",
"\n",
" if particle.isospin is not None:\n",
" jpc_ig = rf\"${spin_latex}^{{{format_parity(particle.parity)}{format_parity(particle.c_parity)}}} \\ ({isospin_magnitude_latex}^{{{format_parity(particle.g_parity)}}})$\"\n",
" else:\n",
" jpc_ig = rf\"${spin_latex}^{{{format_parity(particle.parity)}{format_parity(particle.c_parity)}}}$\"\n",
"\n",
" return {\n",
" \"Name\": particle.name,\n",
" \"PID\": str(particle.pid),\n",
" r\"$J^{PC} (I^G)$\": jpc_ig,\n",
" r\"$I_3$\": isospin_projection_latex,\n",
" r\"$M$\": str(round(particle.mass, 3)),\n",
" r\"$\\Gamma$\": str(particle.width),\n",
" r\"$Q$\": str(particle.charge),\n",
" r\"$S$\": str(particle.strangeness),\n",
" r\"$B$\": str(particle.baryon_number),\n",
" }"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"scroll-output",
"full-width",
"hide-input"
]
},
"outputs": [],
"source": [
"def generate_markdown_table(particles):\n",
" headers = [\"Particle\", *particle_extract(particles[0]).keys()]\n",
" rows = []\n",
" return rf\"\\frac{{{value.numerator}}}{{{value.denominator}}}\"\n",
"\n",
" for name in particles:\n",
" row = [latex_particle_names.get(name, name), *particle_extract(name).values()]\n",
" rows.append(row)\n",
"\n",
" table_md = \"| \" + \" | \".join(headers) + \" |\\n\"\n",
" table_md += \"| \" + \" | \".join([\"---\"] * len(headers)) + \" |\\n\"\n",
" for row in rows:\n",
" table_md += \"| \" + \" | \".join(row) + \" |\\n\"\n",
" return table_md\n",
"def format_parity(parity: int | None) -> str:\n",
" if parity is None:\n",
" return \" \"\n",
" if parity == -1:\n",
" return \"-\"\n",
" if parity == 1:\n",
" return \"+\"\n",
" return str(parity)\n",
"\n",
"\n",
"particles = [\"Lambda\", \"K+\", \"pi0\", \"gamma\", \"p\"]\n",
"markdown_table = generate_markdown_table(particles)\n",
"display(Markdown(markdown_table))"
"Markdown(markdown_table)"
]
},
{
Expand Down

0 comments on commit 285a616

Please sign in to comment.