MilesCranmer commited on
Commit
796a8ad
·
unverified ·
1 Parent(s): 65151c8

Remove Feynman problems and dataset

Browse files
.github/workflows/CI.yml CHANGED
@@ -64,22 +64,22 @@ jobs:
64
  run: pip install coverage coveralls
65
  - name: "Run tests"
66
  run: |
67
- coverage run --source=pysr --omit='*/test/*,*/feynman_problems.py' -m pysr test main
68
- coverage run --append --source=pysr --omit='*/test/*,*/feynman_problems.py' -m pysr test cli
69
  - name: "Install JAX"
70
  run: pip install jax jaxlib # (optional import)
71
  if: ${{ matrix.test-id == 'main' }}
72
  - name: "Run JAX tests"
73
- run: coverage run --append --source=pysr --omit='*/test/*,*/feynman_problems.py' -m pysr test jax
74
  if: ${{ matrix.test-id == 'main' }}
75
  - name: "Install Torch"
76
  run: pip install torch # (optional import)
77
  if: ${{ matrix.test-id == 'main' }}
78
  - name: "Run Torch tests"
79
- run: coverage run --append --source=pysr --omit='*/test/*,*/feynman_problems.py' -m pysr test torch
80
  if: ${{ matrix.test-id == 'main' }}
81
  - name: "Run custom env tests"
82
- run: coverage run --append --source=pysr --omit='*/test/*,*/feynman_problems.py' -m pysr test env
83
  - name: "Coveralls"
84
  env:
85
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 
64
  run: pip install coverage coveralls
65
  - name: "Run tests"
66
  run: |
67
+ coverage run --source=pysr --omit='*/test/*' -m pysr test main
68
+ coverage run --append --source=pysr --omit='*/test/*' -m pysr test cli
69
  - name: "Install JAX"
70
  run: pip install jax jaxlib # (optional import)
71
  if: ${{ matrix.test-id == 'main' }}
72
  - name: "Run JAX tests"
73
+ run: coverage run --append --source=pysr --omit='*/test/*' -m pysr test jax
74
  if: ${{ matrix.test-id == 'main' }}
75
  - name: "Install Torch"
76
  run: pip install torch # (optional import)
77
  if: ${{ matrix.test-id == 'main' }}
78
  - name: "Run Torch tests"
79
+ run: coverage run --append --source=pysr --omit='*/test/*' -m pysr test torch
80
  if: ${{ matrix.test-id == 'main' }}
81
  - name: "Run custom env tests"
82
+ run: coverage run --append --source=pysr --omit='*/test/*' -m pysr test env
83
  - name: "Coveralls"
84
  env:
85
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
datasets/FeynmanEquations.csv DELETED
@@ -1,101 +0,0 @@
1
- Filename,datapoints,Number,Output,Formula,# variables,v1_name,v1_low,v1_high,v2_name,v2_low,v2_high,v3_name,v3_low,v3_high,v4_name,v4_low,v4_high,v5_name,v5_low,v5_high,v6_name,v6_low,v6_high,v7_name,v7_low,v7_high,v8_name,v8_low,v8_high,v9_name,v9_low,v9_high,v10_name,v10_low,v10_high
2
- I.6.2a,10,1,f,exp(-theta**2/2)/sqrt(2*pi),1,theta,1,3,,,,,,,,,,,,,,,,,,,,,,,,,,,
3
- I.6.2,100,2,f,exp(-(theta/sigma)**2/2)/(sqrt(2*pi)*sigma),2,sigma,1,3,theta,1,3,,,,,,,,,,,,,,,,,,,,,,,,
4
- I.6.2b,1000,3,f,exp(-((theta-theta1)/sigma)**2/2)/(sqrt(2*pi)*sigma),3,sigma,1,3,theta,1,3,theta1,1,3,,,,,,,,,,,,,,,,,,,,,
5
- I.8.14,100,4,d,sqrt((x2-x1)**2+(y2-y1)**2),4,x1,1,5,x2,1,5,y1,1,5,y2,1,5,,,,,,,,,,,,,,,,,,
6
- I.9.18,1000000,5,F,G*m1*m2/((x2-x1)**2+(y2-y1)**2+(z2-z1)**2),9,m1,1,2,m2,1,2,G,1,2,x1,3,4,x2,1,2,y1,3,4,y2,1,2,z1,3,4,z2,1,2,,,
7
- I.10.7,10,6,m,m_0/sqrt(1-v**2/c**2),3,m_0,1,5,v,1,2,c,3,10,,,,,,,,,,,,,,,,,,,,,
8
- I.11.19,100,7,A,x1*y1+x2*y2+x3*y3,6,x1,1,5,x2,1,5,x3,1,5,y1,1,5,y2,1,5,y3,1,5,,,,,,,,,,,,
9
- I.12.1,10,8,F,mu*Nn,2,mu,1,5,Nn,1,5,,,,,,,,,,,,,,,,,,,,,,,,
10
- I.12.2,10,10,F,q1*q2*r/(4*pi*epsilon*r**3),4,q1,1,5,q2,1,5,epsilon,1,5,r,1,5,,,,,,,,,,,,,,,,,,
11
- I.12.4,10,11,Ef,q1*r/(4*pi*epsilon*r**3),3,q1,1,5,epsilon,1,5,r,1,5,,,,,,,,,,,,,,,,,,,,,
12
- I.12.5,10,12,F,q2*Ef,2,q2,1,5,Ef,1,5,,,,,,,,,,,,,,,,,,,,,,,,
13
- I.12.11,10,13,F,q*(Ef+B*v*sin(theta)),5,q,1,5,Ef,1,5,B,1,5,v,1,5,theta,1,5,,,,,,,,,,,,,,,
14
- I.13.4,10,9,K,1/2*m*(v**2+u**2+w**2),4,m,1,5,v,1,5,u,1,5,w,1,5,,,,,,,,,,,,,,,,,,
15
- I.13.12,10,14,U,G*m1*m2*(1/r2-1/r1),5,m1,1,5,m2,1,5,r1,1,5,r2,1,5,G,1,5,,,,,,,,,,,,,,,
16
- I.14.3,10,15,U,m*g*z,3,m,1,5,g,1,5,z,1,5,,,,,,,,,,,,,,,,,,,,,
17
- I.14.4,10,16,U,1/2*k_spring*x**2,2,k_spring,1,5,x,1,5,,,,,,,,,,,,,,,,,,,,,,,,
18
- I.15.3x,10,17,x1,(x-u*t)/sqrt(1-u**2/c**2),4,x,5,10,u,1,2,c,3,20,t,1,2,,,,,,,,,,,,,,,,,,
19
- I.15.3t,100,18,t1,(t-u*x/c**2)/sqrt(1-u**2/c**2),4,x,1,5,c,3,10,u,1,2,t,1,5,,,,,,,,,,,,,,,,,,
20
- I.15.1,10,19,p,m_0*v/sqrt(1-v**2/c**2),3,m_0,1,5,v,1,2,c,3,10,,,,,,,,,,,,,,,,,,,,,
21
- I.16.6,10,20,v1,(u+v)/(1+u*v/c**2),3,c,1,5,v,1,5,u,1,5,,,,,,,,,,,,,,,,,,,,,
22
- I.18.4,10,21,r,(m1*r1+m2*r2)/(m1+m2),4,m1,1,5,m2,1,5,r1,1,5,r2,1,5,,,,,,,,,,,,,,,,,,
23
- I.18.12,10,22,tau,r*F*sin(theta),3,r,1,5,F,1,5,theta,0,5,,,,,,,,,,,,,,,,,,,,,
24
- I.18.14,10,23,L,m*r*v*sin(theta),4,m,1,5,r,1,5,v,1,5,theta,1,5,,,,,,,,,,,,,,,,,,
25
- I.24.6,10,24,E_n,1/2*m*(omega**2+omega_0**2)*1/2*x**2,4,m,1,3,omega,1,3,omega_0,1,3,x,1,3,,,,,,,,,,,,,,,,,,
26
- I.25.13,10,25,Volt,q/C,2,q,1,5,C,1,5,,,,,,,,,,,,,,,,,,,,,,,,
27
- I.26.2,100,26,theta1,arcsin(n*sin(theta2)),2,n,0,1,theta2,1,5,,,,,,,,,,,,,,,,,,,,,,,,
28
- I.27.6,10,27,foc,1/(1/d1+n/d2),3,d1,1,5,d2,1,5,n,1,5,,,,,,,,,,,,,,,,,,,,,
29
- I.29.4,10,28,k,omega/c,2,omega,1,10,c,1,10,,,,,,,,,,,,,,,,,,,,,,,,
30
- I.29.16,1000,29,x,sqrt(x1**2+x2**2-2*x1*x2*cos(theta1-theta2)),4,x1,1,5,x2,1,5,theta1,1,5,theta2,1,5,,,,,,,,,,,,,,,,,,
31
- I.30.3,100,30,Int,Int_0*sin(n*theta/2)**2/sin(theta/2)**2,3,Int_0,1,5,theta,1,5,n,1,5,,,,,,,,,,,,,,,,,,,,,
32
- I.30.5,100,31,theta,arcsin(lambd/(n*d)),3,lambd,1,2,d,2,5,n,1,5,,,,,,,,,,,,,,,,,,,,,
33
- I.32.5,10,32,Pwr,q**2*a**2/(6*pi*epsilon*c**3),4,q,1,5,a,1,5,epsilon,1,5,c,1,5,,,,,,,,,,,,,,,,,,
34
- I.32.17,10,33,Pwr,(1/2*epsilon*c*Ef**2)*(8*pi*r**2/3)*(omega**4/(omega**2-omega_0**2)**2),6,epsilon,1,2,c,1,2,Ef,1,2,r,1,2,omega,1,2,omega_0,3,5,,,,,,,,,,,,
35
- I.34.8,10,34,omega,q*v*B/p,4,q,1,5,v,1,5,B,1,5,p,1,5,,,,,,,,,,,,,,,,,,
36
- I.34.1,10,35,omega,omega_0/(1-v/c),3,c,3,10,v,1,2,omega_0,1,5,,,,,,,,,,,,,,,,,,,,,
37
- I.34.14,10,36,omega,(1+v/c)/sqrt(1-v**2/c**2)*omega_0,3,c,3,10,v,1,2,omega_0,1,5,,,,,,,,,,,,,,,,,,,,,
38
- I.34.27,10,37,E_n,(h/(2*pi))*omega,2,omega,1,5,h,1,5,,,,,,,,,,,,,,,,,,,,,,,,
39
- I.37.4,100,38,Int,I1+I2+2*sqrt(I1*I2)*cos(delta),3,I1,1,5,I2,1,5,delta,1,5,,,,,,,,,,,,,,,,,,,,,
40
- I.38.12,10,39,r,4*pi*epsilon*(h/(2*pi))**2/(m*q**2),4,m,1,5,q,1,5,h,1,5,epsilon,1,5,,,,,,,,,,,,,,,,,,
41
- I.39.1,10,40,E_n,3/2*pr*V,2,pr,1,5,V,1,5,,,,,,,,,,,,,,,,,,,,,,,,
42
- I.39.11,10,41,E_n,1/(gamma-1)*pr*V,3,gamma,2,5,pr,1,5,V,1,5,,,,,,,,,,,,,,,,,,,,,
43
- I.39.22,10,42,pr,n*kb*T/V,4,n,1,5,T,1,5,V,1,5,kb,1,5,,,,,,,,,,,,,,,,,,
44
- I.40.1,10,43,n,n_0*exp(-m*g*x/(kb*T)),6,n_0,1,5,m,1,5,x,1,5,T,1,5,g,1,5,kb,1,5,,,,,,,,,,,,
45
- I.41.16,10,44,L_rad,h/(2*pi)*omega**3/(pi**2*c**2*(exp((h/(2*pi))*omega/(kb*T))-1)),5,omega,1,5,T,1,5,h,1,5,kb,1,5,c,1,5,,,,,,,,,,,,,,,
46
- I.43.16,10,45,v,mu_drift*q*Volt/d,4,mu_drift,1,5,q,1,5,Volt,1,5,d,1,5,,,,,,,,,,,,,,,,,,
47
- I.43.31,10,46,D,mob*kb*T,3,mob,1,5,T,1,5,kb,1,5,,,,,,,,,,,,,,,,,,,,,
48
- I.43.43,10,47,kappa,1/(gamma-1)*kb*v/A,4,gamma,2,5,kb,1,5,A,1,5,v,1,5,,,,,,,,,,,,,,,,,,
49
- I.44.4,10,48,E_n,n*kb*T*ln(V2/V1),5,n,1,5,kb,1,5,T,1,5,V1,1,5,V2,1,5,,,,,,,,,,,,,,,
50
- I.47.23,10,49,c,sqrt(gamma*pr/rho),3,gamma,1,5,pr,1,5,rho,1,5,,,,,,,,,,,,,,,,,,,,,
51
- I.48.2,100,50,E_n,m*c**2/sqrt(1-v**2/c**2),3,m,1,5,v,1,2,c,3,10,,,,,,,,,,,,,,,,,,,,,
52
- I.50.26,10,51,x,x1*(cos(omega*t)+alpha*cos(omega*t)**2),4,x1,1,3,omega,1,3,t,1,3,alpha,1,3,,,,,,,,,,,,,,,,,,
53
- II.2.42,10,52,Pwr,kappa*(T2-T1)*A/d,5,kappa,1,5,T1,1,5,T2,1,5,A,1,5,d,1,5,,,,,,,,,,,,,,,
54
- II.3.24,10,53,flux,Pwr/(4*pi*r**2),2,Pwr,1,5,r,1,5,,,,,,,,,,,,,,,,,,,,,,,,
55
- II.4.23,10,54,Volt,q/(4*pi*epsilon*r),3,q,1,5,epsilon,1,5,r,1,5,,,,,,,,,,,,,,,,,,,,,
56
- II.6.11,10,55,Volt,1/(4*pi*epsilon)*p_d*cos(theta)/r**2,4,epsilon,1,3,p_d,1,3,theta,1,3,r,1,3,,,,,,,,,,,,,,,,,,
57
- II.6.15a,1000,56,Ef,p_d/(4*pi*epsilon)*3*z/r**5*sqrt(x**2+y**2),6,epsilon,1,3,p_d,1,3,r,1,3,x,1,3,y,1,3,z,1,3,,,,,,,,,,,,
58
- II.6.15b,10,57,Ef,p_d/(4*pi*epsilon)*3*cos(theta)*sin(theta)/r**3,4,epsilon,1,3,p_d,1,3,theta,1,3,r,1,3,,,,,,,,,,,,,,,,,,
59
- II.8.7,10,58,E_n,3/5*q**2/(4*pi*epsilon*d),3,q,1,5,epsilon,1,5,d,1,5,,,,,,,,,,,,,,,,,,,,,
60
- II.8.31,10,59,E_den,epsilon*Ef**2/2,2,epsilon,1,5,Ef,1,5,,,,,,,,,,,,,,,,,,,,,,,,
61
- II.10.9,10,60,Ef,sigma_den/epsilon*1/(1+chi),3,sigma_den,1,5,epsilon,1,5,chi,1,5,,,,,,,,,,,,,,,,,,,,,
62
- II.11.3,10,61,x,q*Ef/(m*(omega_0**2-omega**2)),5,q,1,3,Ef,1,3,m,1,3,omega_0,3,5,omega,1,2,,,,,,,,,,,,,,,
63
- II.11.17,10,62,n,n_0*(1+p_d*Ef*cos(theta)/(kb*T)),6,n_0,1,3,kb,1,3,T,1,3,theta,1,3,p_d,1,3,Ef,1,3,,,,,,,,,,,,
64
- II.11.20,10,63,Pol,n_rho*p_d**2*Ef/(3*kb*T),5,n_rho,1,5,p_d,1,5,Ef,1,5,kb,1,5,T,1,5,,,,,,,,,,,,,,,
65
- II.11.27,100,64,Pol,n*alpha/(1-(n*alpha/3))*epsilon*Ef,4,n,0,1,alpha,0,1,epsilon,1,2,Ef,1,2,,,,,,,,,,,,,,,,,,
66
- II.11.28,100,65,theta,1+n*alpha/(1-(n*alpha/3)),2,n,0,1,alpha,0,1,,,,,,,,,,,,,,,,,,,,,,,,
67
- II.13.17,10,66,B,1/(4*pi*epsilon*c**2)*2*I/r,4,epsilon,1,5,c,1,5,I,1,5,r,1,5,,,,,,,,,,,,,,,,,,
68
- II.13.23,100,67,rho_c,rho_c_0/sqrt(1-v**2/c**2),3,rho_c_0,1,5,v,1,2,c,3,10,,,,,,,,,,,,,,,,,,,,,
69
- II.13.34,10,68,j,rho_c_0*v/sqrt(1-v**2/c**2),3,rho_c_0,1,5,v,1,2,c,3,10,,,,,,,,,,,,,,,,,,,,,
70
- II.15.4,10,69,E_n,-mom*B*cos(theta),3,mom,1,5,B,1,5,theta,1,5,,,,,,,,,,,,,,,,,,,,,
71
- II.15.5,10,70,E_n,-p_d*Ef*cos(theta),3,p_d,1,5,Ef,1,5,theta,1,5,,,,,,,,,,,,,,,,,,,,,
72
- II.21.32,10,71,Volt,q/(4*pi*epsilon*r*(1-v/c)),5,q,1,5,epsilon,1,5,r,1,5,v,1,2,c,3,10,,,,,,,,,,,,,,,
73
- II.24.17,10,72,k,sqrt(omega**2/c**2-pi**2/d**2),3,omega,4,6,c,1,2,d,2,4,,,,,,,,,,,,,,,,,,,,,
74
- II.27.16,10,73,flux,epsilon*c*Ef**2,3,epsilon,1,5,c,1,5,Ef,1,5,,,,,,,,,,,,,,,,,,,,,
75
- II.27.18,10,74,E_den,epsilon*Ef**2,2,epsilon,1,5,Ef,1,5,,,,,,,,,,,,,,,,,,,,,,,,
76
- II.34.2a,10,75,I,q*v/(2*pi*r),3,q,1,5,v,1,5,r,1,5,,,,,,,,,,,,,,,,,,,,,
77
- II.34.2,10,76,mom,q*v*r/2,3,q,1,5,v,1,5,r,1,5,,,,,,,,,,,,,,,,,,,,,
78
- II.34.11,10,77,omega,g_*q*B/(2*m),4,g_,1,5,q,1,5,B,1,5,m,1,5,,,,,,,,,,,,,,,,,,
79
- II.34.29a,10,78,mom,q*h/(4*pi*m),3,q,1,5,h,1,5,m,1,5,,,,,,,,,,,,,,,,,,,,,
80
- II.34.29b,10,79,E_n,g_*mom*B*Jz/(h/(2*pi)),5,g_,1,5,h,1,5,Jz,1,5,mom,1,5,B,1,5,,,,,,,,,,,,,,,
81
- II.35.18,10,80,n,n_0/(exp(mom*B/(kb*T))+exp(-mom*B/(kb*T))),5,n_0,1,3,kb,1,3,T,1,3,mom,1,3,B,1,3,,,,,,,,,,,,,,,
82
- II.35.21,10,81,M,n_rho*mom*tanh(mom*B/(kb*T)),5,n_rho,1,5,mom,1,5,B,1,5,kb,1,5,T,1,5,,,,,,,,,,,,,,,
83
- II.36.38,10,82,f,mom*H/(kb*T)+(mom*alpha)/(epsilon*c**2*kb*T)*M,8,mom,1,3,H,1,3,kb,1,3,T,1,3,alpha,1,3,epsilon,1,3,c,1,3,M,1,3,,,,,,
84
- II.37.1,10,83,E_n,mom*(1+chi)*B,3,mom,1,5,B,1,5,chi,1,5,,,,,,,,,,,,,,,,,,,,,
85
- II.38.3,10,84,F,Y*A*x/d,4,Y,1,5,A,1,5,d,1,5,x,1,5,,,,,,,,,,,,,,,,,,
86
- II.38.14,10,85,mu_S,Y/(2*(1+sigma)),2,Y,1,5,sigma,1,5,,,,,,,,,,,,,,,,,,,,,,,,
87
- III.4.32,10,86,n,1/(exp((h/(2*pi))*omega/(kb*T))-1),4,h,1,5,omega,1,5,kb,1,5,T,1,5,,,,,,,,,,,,,,,,,,
88
- III.4.33,10,87,E_n,(h/(2*pi))*omega/(exp((h/(2*pi))*omega/(kb*T))-1),4,h,1,5,omega,1,5,kb,1,5,T,1,5,,,,,,,,,,,,,,,,,,
89
- III.7.38,10,88,omega,2*mom*B/(h/(2*pi)),3,mom,1,5,B,1,5,h,1,5,,,,,,,,,,,,,,,,,,,,,
90
- III.8.54,10,89,prob,sin(E_n*t/(h/(2*pi)))**2,3,E_n,1,2,t,1,2,h,1,4,,,,,,,,,,,,,,,,,,,,,
91
- III.9.52,1000,90,prob,(p_d*Ef*t/(h/(2*pi)))*sin((omega-omega_0)*t/2)**2/((omega-omega_0)*t/2)**2,6,p_d,1,3,Ef,1,3,t,1,3,h,1,3,omega,1,5,omega_0,1,5,,,,,,,,,,,,
92
- III.10.19,100,91,E_n,mom*sqrt(Bx**2+By**2+Bz**2),4,mom,1,5,Bx,1,5,By,1,5,Bz,1,5,,,,,,,,,,,,,,,,,,
93
- III.12.43,10,92,L,n*(h/(2*pi)),2,n,1,5,h,1,5,,,,,,,,,,,,,,,,,,,,,,,,
94
- III.13.18,10,93,v,2*E_n*d**2*k/(h/(2*pi)),4,E_n,1,5,d,1,5,k,1,5,h,1,5,,,,,,,,,,,,,,,,,,
95
- III.14.14,10,94,I,I_0*(exp(q*Volt/(kb*T))-1),5,I_0,1,5,q,1,2,Volt,1,2,kb,1,2,T,1,2,,,,,,,,,,,,,,,
96
- III.15.12,10,95,E_n,2*U*(1-cos(k*d)),3,U,1,5,k,1,5,d,1,5,,,,,,,,,,,,,,,,,,,,,
97
- III.15.14,10,96,m,(h/(2*pi))**2/(2*E_n*d**2),3,h,1,5,E_n,1,5,d,1,5,,,,,,,,,,,,,,,,,,,,,
98
- III.15.27,10,97,k,2*pi*alpha/(n*d),3,alpha,1,5,n,1,5,d,1,5,,,,,,,,,,,,,,,,,,,,,
99
- III.17.37,10,98,f,beta*(1+alpha*cos(theta)),3,beta,1,5,alpha,1,5,theta,1,5,,,,,,,,,,,,,,,,,,,,,
100
- III.19.51,10,99,E_n,-m*q**4/(2*(4*pi*epsilon)**2*(h/(2*pi))**2)*(1/n**2),5,m,1,5,q,1,5,h,1,5,n,1,5,epsilon,1,5,,,,,,,,,,,,,,,
101
- III.21.20,10,100,j,-rho_c_0*q*A_vec/m,4,rho_c_0,1,5,q,1,5,A_vec,1,5,m,1,5,,,,,,,,,,,,,,,,,,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
pysr/__init__.py CHANGED
@@ -2,7 +2,6 @@ from . import sklearn_monkeypatch
2
  from .deprecated import best, best_callable, best_row, best_tex, pysr
3
  from .export_jax import sympy2jax
4
  from .export_torch import sympy2torch
5
- from .feynman_problems import FeynmanProblem, Problem
6
  from .sr import PySRRegressor, jl
7
 
8
  # This file is created by setuptools_scm during the build process:
@@ -12,7 +11,6 @@ __all__ = [
12
  "sklearn_monkeypatch",
13
  "sympy2jax",
14
  "sympy2torch",
15
- "FeynmanProblem",
16
  "Problem",
17
  "install",
18
  "PySRRegressor",
 
2
  from .deprecated import best, best_callable, best_row, best_tex, pysr
3
  from .export_jax import sympy2jax
4
  from .export_torch import sympy2torch
 
5
  from .sr import PySRRegressor, jl
6
 
7
  # This file is created by setuptools_scm during the build process:
 
11
  "sklearn_monkeypatch",
12
  "sympy2jax",
13
  "sympy2torch",
 
14
  "Problem",
15
  "install",
16
  "PySRRegressor",
pysr/feynman_problems.py DELETED
@@ -1,176 +0,0 @@
1
- import csv
2
- from functools import partial
3
- from pathlib import Path
4
-
5
- import numpy as np
6
-
7
- from .deprecated import best, pysr
8
-
9
- PKG_DIR = Path(__file__).parents[1]
10
- FEYNMAN_DATASET = PKG_DIR / "datasets" / "FeynmanEquations.csv"
11
-
12
-
13
- class Problem:
14
- """
15
- Problem API to work with PySR.
16
-
17
- Has attributes: X, y as pysr accepts, form which is a string representing the correct equation and variable_names
18
-
19
- Should be able to call pysr(problem.X, problem.y, var_names=problem.var_names) and have it work
20
- """
21
-
22
- def __init__(self, X, y, form=None, variable_names=None):
23
- self.X = X
24
- self.y = y
25
- self.form = form
26
- self.variable_names = variable_names
27
-
28
-
29
- class FeynmanProblem(Problem):
30
- """
31
- Stores the data for the problems from the 100 Feynman Equations on Physics.
32
- This is the benchmark used in the AI Feynman Paper
33
- """
34
-
35
- def __init__(self, row, gen=False, dp=500):
36
- """
37
- row: a row read as a dict from the FeynmanEquations dataset provided in the datasets folder of the repo
38
- gen: If true the problem will have dp X and y values randomly generated else they will be None
39
- """
40
- self.eq_id = row["Filename"]
41
- self.n_vars = int(row["# variables"])
42
- super(FeynmanProblem, self).__init__(
43
- None,
44
- None,
45
- form=row["Formula"],
46
- variable_names=[row[f"v{i + 1}_name"] for i in range(self.n_vars)],
47
- )
48
- self.low = [float(row[f"v{i+1}_low"]) for i in range(self.n_vars)]
49
- self.high = [float(row[f"v{i+1}_high"]) for i in range(self.n_vars)]
50
- self.dp = dp
51
- if gen:
52
- self.X = np.random.uniform(0.01, 25, size=(self.dp, self.n_vars))
53
- d = {}
54
- for var in range(len(self.variable_names)):
55
- d[self.variable_names[var]] = self.X[:, var]
56
- d["exp"] = np.exp
57
- d["sqrt"] = np.sqrt
58
- d["pi"] = np.pi
59
- d["cos"] = np.cos
60
- d["sin"] = np.sin
61
- d["tan"] = np.tan
62
- d["tanh"] = np.tanh
63
- d["ln"] = np.log
64
- d["log"] = np.log # Quite sure the Feynman dataset has no base 10 logs
65
- d["arcsin"] = np.arcsin
66
- self.y = eval(self.form, d)
67
-
68
- def __str__(self):
69
- return f"Feynman Equation: {self.eq_id}|Form: {self.form}"
70
-
71
- def __repr__(self):
72
- return str(self)
73
-
74
-
75
- def mk_problems(first=100, gen=False, dp=500, data_dir=FEYNMAN_DATASET):
76
- """
77
-
78
- first: the first "first" equations from the dataset will be made into problems
79
- data_dir: the path pointing to the Feynman Equations csv
80
- returns: list of FeynmanProblems
81
- """
82
- ret = []
83
- with open(data_dir) as csvfile:
84
- reader = csv.DictReader(csvfile)
85
- for i, row in enumerate(reader):
86
- if i > first:
87
- break
88
- if row["Filename"] == "":
89
- continue
90
- p = FeynmanProblem(row, gen=gen, dp=dp)
91
- ret.append(p)
92
- return ret
93
-
94
-
95
- def run_on_problem(problem, verbosity=0, multiprocessing=True):
96
- """
97
- Takes in a problem and returns a tuple: (equations, best predicted equation, actual equation)
98
- """
99
- from time import time
100
-
101
- starting = time()
102
- equations = pysr(
103
- problem.X,
104
- problem.y,
105
- variable_names=problem.variable_names,
106
- verbosity=verbosity,
107
- )
108
- timing = time() - starting
109
- others = {"time": timing, "problem": problem}
110
- if not multiprocessing:
111
- others["equations"] = equations
112
- return str(best(equations)), problem.form, others
113
-
114
-
115
- def do_feynman_experiments_parallel(
116
- first=100,
117
- verbosity=0,
118
- dp=500,
119
- output_file_path="FeynmanExperiment.csv",
120
- data_dir=FEYNMAN_DATASET,
121
- ):
122
- import multiprocessing as mp
123
-
124
- from tqdm import tqdm
125
-
126
- problems = mk_problems(first=first, gen=True, dp=dp, data_dir=data_dir)
127
- ids = []
128
- predictions = []
129
- true_equations = []
130
- time_takens = []
131
- pool = mp.Pool()
132
- results = []
133
- with tqdm(total=len(problems)) as pbar:
134
- f = partial(run_on_problem, verbosity=verbosity)
135
- for i, res in enumerate(pool.imap(f, problems)):
136
- results.append(res)
137
- pbar.update()
138
- for res in results:
139
- prediction, true_equation, others = res
140
- problem = others["problem"]
141
- ids.append(problem.eq_id)
142
- predictions.append(prediction)
143
- true_equations.append(true_equation)
144
- time_takens.append(others["time"])
145
- with open(output_file_path, "a") as f:
146
- writer = csv.writer(f, delimiter=",")
147
- writer.writerow(["ID", "Predicted", "True", "Time"])
148
- for i in range(len(ids)):
149
- writer.writerow([ids[i], predictions[i], true_equations[i], time_takens[i]])
150
-
151
-
152
- def do_feynman_experiments(
153
- first=100,
154
- verbosity=0,
155
- dp=500,
156
- output_file_path="FeynmanExperiment.csv",
157
- data_dir=FEYNMAN_DATASET,
158
- ):
159
- from tqdm import tqdm
160
-
161
- problems = mk_problems(first=first, gen=True, dp=dp, data_dir=data_dir)
162
- ids = []
163
- predictions = []
164
- true_equations = []
165
- time_takens = []
166
- for problem in tqdm(problems):
167
- prediction, true_equation, others = run_on_problem(problem, verbosity)
168
- ids.append(problem.eq_id)
169
- predictions.append(prediction)
170
- true_equations.append(true_equation)
171
- time_takens.append(others["time"])
172
- with open(output_file_path, "a") as f:
173
- writer = csv.writer(f, delimiter=",")
174
- writer.writerow(["ID", "Predicted", "True", "Time"])
175
- for i in range(len(ids)):
176
- writer.writerow([ids[i], predictions[i], true_equations[i], time_takens[i]])