MilesCranmer commited on
Commit
118c5f6
1 Parent(s): 9a5df63

Generate table with scientific notation for floats

Browse files
Files changed (3) hide show
  1. pysr/export_latex.py +1 -0
  2. pysr/sr.py +10 -4
  3. test/test.py +11 -11
pysr/export_latex.py CHANGED
@@ -5,6 +5,7 @@ from sympy.printing.latex import LatexPrinter
5
 
6
  class PreciseLatexPrinter(LatexPrinter):
7
  """Modified SymPy printer with custom float precision."""
 
8
  def __init__(self, settings=None, prec=3):
9
  super().__init__(settings)
10
  self.prec = prec
 
5
 
6
  class PreciseLatexPrinter(LatexPrinter):
7
  """Modified SymPy printer with custom float precision."""
8
+
9
  def __init__(self, settings=None, prec=3):
10
  super().__init__(settings)
11
  self.prec = prec
pysr/sr.py CHANGED
@@ -2039,14 +2039,20 @@ class PySRRegressor(MultiOutputMixin, RegressorMixin, BaseEstimator):
2039
  # Also convert these to reduced precision:
2040
  # loss = self.equations_.iloc[i]["loss"]
2041
  # score = self.equations_.iloc[i]["score"]
2042
- complexity = "{:d}".format(self.equations_.iloc[i]["complexity"])
2043
- loss = "{:.{p}g}".format(self.equations_.iloc[i]["loss"], p=precision)
2044
- score = "{:.{p}g}".format(self.equations_.iloc[i]["score"], p=precision)
 
 
 
 
2045
 
2046
- row_pieces = ["$" + equation + "$", complexity, loss]
2047
  if include_score:
2048
  row_pieces.append(score)
2049
 
 
 
2050
  latex_table_content.append(
2051
  " & ".join(row_pieces) + r" \\",
2052
  )
 
2039
  # Also convert these to reduced precision:
2040
  # loss = self.equations_.iloc[i]["loss"]
2041
  # score = self.equations_.iloc[i]["score"]
2042
+ complexity = str(self.equations_.iloc[i]["complexity"])
2043
+ loss = to_latex(
2044
+ sympy.Float(self.equations_.iloc[i]["loss"]), prec=precision
2045
+ )
2046
+ score = to_latex(
2047
+ sympy.Float(self.equations_.iloc[i]["score"]), prec=precision
2048
+ )
2049
 
2050
+ row_pieces = [equation, complexity, loss]
2051
  if include_score:
2052
  row_pieces.append(score)
2053
 
2054
+ row_pieces = ["$" + piece + "$" for piece in row_pieces]
2055
+
2056
  latex_table_content.append(
2057
  " & ".join(row_pieces) + r" \\",
2058
  )
test/test.py CHANGED
@@ -540,9 +540,9 @@ class TestLaTeXTable(unittest.TestCase):
540
  # Regular table:
541
  latex_table_str = model.latex_table()
542
  middle_part = r"""
543
- $x_{0}$ & 1 & 1.05 \\
544
- $\cos{\left(x_{0} \right)}$ & 2 & 0.0232 \\
545
- $x_{0} + x_{1} - \cos{\left(x_{0} x_{1} \right)}$ & 8 & 1.12e-15 \\
546
  """
547
  true_latex_table_str = self.create_true_latex(middle_part)
548
  self.assertEqual(latex_table_str, true_latex_table_str)
@@ -550,9 +550,9 @@ class TestLaTeXTable(unittest.TestCase):
550
  # Different precision:
551
  latex_table_str = model.latex_table(precision=5)
552
  middle_part = r"""
553
- $x_{0}$ & 1 & 1.052 \\
554
- $\cos{\left(x_{0} \right)}$ & 2 & 0.02315 \\
555
- $x_{0} + x_{1} - \cos{\left(x_{0} x_{1} \right)}$ & 8 & 1.1235e-15 \\
556
  """
557
  true_latex_table_str = self.create_true_latex(middle_part)
558
  self.assertEqual(latex_table_str, self.create_true_latex(middle_part))
@@ -560,9 +560,9 @@ class TestLaTeXTable(unittest.TestCase):
560
  # Including score:
561
  latex_table_str = model.latex_table(include_score=True)
562
  middle_part = r"""
563
- $x_{0}$ & 1 & 1.05 & 0 \\
564
- $\cos{\left(x_{0} \right)}$ & 2 & 0.0232 & 3.82 \\
565
- $x_{0} + x_{1} - \cos{\left(x_{0} x_{1} \right)}$ & 8 & 1.12e-15 & 5.11 \\
566
  """
567
  true_latex_table_str = self.create_true_latex(middle_part, include_score=True)
568
  self.assertEqual(latex_table_str, true_latex_table_str)
@@ -570,7 +570,7 @@ class TestLaTeXTable(unittest.TestCase):
570
  # Only last equation:
571
  latex_table_str = model.latex_table(indices=[2])
572
  middle_part = r"""
573
- $x_{0} + x_{1} - \cos{\left(x_{0} x_{1} \right)}$ & 8 & 1.12e-15 \\
574
  """
575
  true_latex_table_str = self.create_true_latex(middle_part)
576
  self.assertEqual(latex_table_str, true_latex_table_str)
@@ -595,4 +595,4 @@ class TestLaTeXTable(unittest.TestCase):
595
  )
596
  self.assertEqual(
597
  to_latex(expr, prec=8), "3232.3249 x - 1.4857485 \cdot 10^{-10}"
598
- )
 
540
  # Regular table:
541
  latex_table_str = model.latex_table()
542
  middle_part = r"""
543
+ $x_{0}$ & $1$ & $1.05$ \\
544
+ $\cos{\left(x_{0} \right)}$ & $2$ & $0.0232$ \\
545
+ $x_{0} + x_{1} - \cos{\left(x_{0} x_{1} \right)}$ & $8$ & $1.12 \cdot 10^{-15}$ \\
546
  """
547
  true_latex_table_str = self.create_true_latex(middle_part)
548
  self.assertEqual(latex_table_str, true_latex_table_str)
 
550
  # Different precision:
551
  latex_table_str = model.latex_table(precision=5)
552
  middle_part = r"""
553
+ $x_{0}$ & $1$ & $1.052$ \\
554
+ $\cos{\left(x_{0} \right)}$ & $2$ & $0.02315$ \\
555
+ $x_{0} + x_{1} - \cos{\left(x_{0} x_{1} \right)}$ & $8$ & $1.1235 \cdot 10^{-15}$ \\
556
  """
557
  true_latex_table_str = self.create_true_latex(middle_part)
558
  self.assertEqual(latex_table_str, self.create_true_latex(middle_part))
 
560
  # Including score:
561
  latex_table_str = model.latex_table(include_score=True)
562
  middle_part = r"""
563
+ $x_{0}$ & $1$ & $1.05$ & $0.0$ \\
564
+ $\cos{\left(x_{0} \right)}$ & $2$ & $0.0232$ & $3.82$ \\
565
+ $x_{0} + x_{1} - \cos{\left(x_{0} x_{1} \right)}$ & $8$ & $1.12 \cdot 10^{-15}$ & $5.11$ \\
566
  """
567
  true_latex_table_str = self.create_true_latex(middle_part, include_score=True)
568
  self.assertEqual(latex_table_str, true_latex_table_str)
 
570
  # Only last equation:
571
  latex_table_str = model.latex_table(indices=[2])
572
  middle_part = r"""
573
+ $x_{0} + x_{1} - \cos{\left(x_{0} x_{1} \right)}$ & $8$ & $1.12 \cdot 10^{-15}$ \\
574
  """
575
  true_latex_table_str = self.create_true_latex(middle_part)
576
  self.assertEqual(latex_table_str, true_latex_table_str)
 
595
  )
596
  self.assertEqual(
597
  to_latex(expr, prec=8), "3232.3249 x - 1.4857485 \cdot 10^{-10}"
598
+ )