From 4b119129535fb5b3c53d0a323d5e15ec944de31f Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Thu, 31 Oct 2024 13:59:34 +0330 Subject: [PATCH 01/23] compatibility bug fixed. --- .gitignore | 177 ++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | Bin 65 -> 2438 bytes src/deeponet_pde.py | 23 +++--- 3 files changed, 188 insertions(+), 12 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..06e9a7b --- /dev/null +++ b/.gitignore @@ -0,0 +1,177 @@ +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +### Python Patch ### +# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration +poetry.toml + +# ruff +.ruff_cache/ + +# LSP config files +pyrightconfig.json + +# End of https://www.toptal.com/developers/gitignore/api/python + + +# Model CheckPoints +model \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 6da6a8723c58adb95c9a71636e59c11f4a4349cf..6b53b4ae1139cfb036cca677561560cd2567bed7 100644 GIT binary patch literal 2438 zcmZveNpBNT5QN_uiJy`vw#jzjfD~>-LgE0NqVbv`Uc!t`;{14^zOH$G6R;u^k*?mV ztNZ!S?<$Q`o0jP$J*Itnub*K$O#^+-(%bYVRkCi=F0Ey+QltOP0tMnipHZMD`fDRx zo#y&D%9$d)6XGgRjy6g6hbUX+T&IovR{GmgelHOP?~#1)&0b64c4?{_>NH6YLc0oZ zrPhg1YgGZZIrM`aT#mI@1pJ$*^DH8`XZoGWLYzi55y`0YF3%vky%A=n_}|h^`gmYt z5X=n&F;$&Q{m=^;$ba2gR_c4JxWveIYP<^jTwY`ztB1LMsIv{6*(B01op)IGOPw3} z83%9Y!JeyKC>}G+xtN-{ScKm~p0k+0an%6{D;Wu&6Lqx-tEYb{yK~$tW7dynQW&kp z=~^}9xemIRKNM@M+_nD2MoelqgAdU;6=lCt_k(<%^l78(UxDmLxD0k2nORrLzvyzH zMl!kXTiF`vX{tz1LgieJfG+#i6Xis;{Z5&#Im)qivVV~$v&->7xi4aFg+S5UUiVf= zK}|!$MM2b@Be1PgdG8fx)-gl|*mGYic`t>ig=mzC{cL;4OVte4eKMVu5YJJsJIZ=o zE7D3)%55mUZ1neSx|3%u?%F`+j?4BM^{?LP*Sv98*y&0$B913zwYwV-YjvE}fVTMf z_F&!Wu55b!5j|VIiOkm;fl2qszCX&Z^o^f)>rs}u;@am_O!?k}Sb4*l2@1{3FkxTa!VEQ*&15p}ejTcSi~m&r zk9($DZb6B^)zx)<`CeOP)b~AoNVn-z*u8yOgG}?MvY@Jd^`qWg8dbo(H-l776`o2P zw}d@rpSVAC>HT9q<`SM>Bdw)cy!o{twv}8|X^*T}?|Rt`-Y?!fF1z#D->f=g-6_Jp z(m?)I9Cjdp)`1NVb;wRO*>JnpAEVRiH7m-}mQ5$m;b~Eebh?<4SFmVIhuN z{pLl6;Z_r6S~Ibic^gS@S#8H-S?S~8j5tipx4?{-JwN7uCp`L|$ Date: Thu, 31 Oct 2024 14:13:01 +0330 Subject: [PATCH 02/23] tensorflow_intel removed from dependencies. --- requirements.txt | Bin 2438 -> 2386 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/requirements.txt b/requirements.txt index 6b53b4ae1139cfb036cca677561560cd2567bed7..2906345421b75478c73b789cd68a1cb6203c3ca2 100644 GIT binary patch delta 12 TcmZn@z9h6EfMatD2NNRz9ft$R delta 36 scmca4)F!+kfMaqDJICZR>>S+j44Djh3?&Sy3^|imvrBFc;9z0|0LmB% Date: Thu, 31 Oct 2024 14:33:25 +0330 Subject: [PATCH 03/23] dynamic module import for src --- src/__init__.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/__init__.py diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..c7626c4 --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,12 @@ + +import os +import pkgutil + +# Automatically import all modules in the current package +__all__ = [] + +# Iterate through all modules in the package +for _, module_name, _ in pkgutil.iter_modules(__path__): + __all__.append(module_name) + # Dynamically import the module + __import__(f'.{module_name}', locals(), globals()) \ No newline at end of file From b4474e4aa4771e90ef076324ad27a052ba76df3c Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Thu, 31 Oct 2024 14:43:30 +0330 Subject: [PATCH 04/23] fix bug for dynamic import. --- src/__init__.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/__init__.py b/src/__init__.py index c7626c4..399506a 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,12 +1,11 @@ - +import glob import os -import pkgutil -# Automatically import all modules in the current package -__all__ = [] +# Get the current directory +module_dir = os.path.dirname(__file__) -# Iterate through all modules in the package -for _, module_name, _ in pkgutil.iter_modules(__path__): - __all__.append(module_name) - # Dynamically import the module - __import__(f'.{module_name}', locals(), globals()) \ No newline at end of file +# Import all .py files in the current directory (excluding __init__.py) +for module_file in glob.glob(os.path.join(module_dir, '*.py')): + module_name = os.path.basename(module_file)[:-3] # Strip the .py extension + if module_name != '__init__': + exec(f'from .{module_name} import *') From 5ccd2877517cc926a7302c62bec921f9524895d9 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Thu, 31 Oct 2024 14:54:59 +0330 Subject: [PATCH 05/23] Revert "dynamic module import for src" This reverts commit 38260b97ed1a4a9f384dc1c0f876616b79b5bcf7. --- src/__init__.py | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 src/__init__.py diff --git a/src/__init__.py b/src/__init__.py deleted file mode 100644 index 399506a..0000000 --- a/src/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -import glob -import os - -# Get the current directory -module_dir = os.path.dirname(__file__) - -# Import all .py files in the current directory (excluding __init__.py) -for module_file in glob.glob(os.path.join(module_dir, '*.py')): - module_name = os.path.basename(module_file)[:-3] # Strip the .py extension - if module_name != '__init__': - exec(f'from .{module_name} import *') From 968cd16e0ec51336294d0df32e04269b1a34dbcf Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Thu, 31 Oct 2024 15:27:51 +0330 Subject: [PATCH 06/23] tendorflow compatibility fixed. --- .gitignore | 2 ++ src/deeponet_pde.py | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 06e9a7b..0317b28 100644 --- a/.gitignore +++ b/.gitignore @@ -172,6 +172,8 @@ pyrightconfig.json # End of https://www.toptal.com/developers/gitignore/api/python +# train- test data +*.dat # Model CheckPoints model \ No newline at end of file diff --git a/src/deeponet_pde.py b/src/deeponet_pde.py index 9e5774d..5e4c493 100644 --- a/src/deeponet_pde.py +++ b/src/deeponet_pde.py @@ -169,7 +169,7 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): "model/model.ckpt", save_better_only=True, period=1000 ) losshistory, train_state = model.train(epochs=epochs, callbacks=[checker]) - print("# Parameters:", np.sum([np.prod(v.get_shape().as_list()) for v in tf.trainable_variables()])) + print("# Parameters:", np.sum([np.prod(v.get_shape().as_list()) for v in tf.compat.v1.trainable_variables()])) dde.saveplot(losshistory, train_state, issave=True, isplot=True) model.restore("model/model.ckpt-" + str(train_state.best_step), verbose=1) @@ -253,10 +253,10 @@ def main(): # Hyperparameters m = 100 - num_train = 10000 - num_test = 100000 + num_train = 1000 + num_test = 2000 lr = 0.001 - epochs = 50000 + epochs = 5000 # Network nn = "fnn" From 0cb134b02f899e9fe15bc70db845a1ee88302401 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Thu, 31 Oct 2024 18:46:10 +0330 Subject: [PATCH 07/23] setting up river pollutants example. --- src/deeponet_pde.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/deeponet_pde.py b/src/deeponet_pde.py index 5e4c493..cf156b1 100644 --- a/src/deeponet_pde.py +++ b/src/deeponet_pde.py @@ -128,8 +128,10 @@ def cvc_system(T, npoints_output): def advd_system(T, npoints_output): """Advection-diffusion""" - f = None - g = None + # source term + f = 10 + # boundary condition + g = [3 , 0] Nt = 100 return ADVDSystem(f, g, T, Nt, npoints_output) @@ -171,7 +173,6 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): losshistory, train_state = model.train(epochs=epochs, callbacks=[checker]) print("# Parameters:", np.sum([np.prod(v.get_shape().as_list()) for v in tf.compat.v1.trainable_variables()])) dde.saveplot(losshistory, train_state, issave=True, isplot=True) - model.restore("model/model.ckpt-" + str(train_state.best_step), verbose=1) safe_test(model, data, X_test, y_test) @@ -227,7 +228,7 @@ def main(): # - "dr": Diffusion-reaction # - "cvc": Advection # - "advd": Advection-diffusion - problem = "ode" + problem = "advd" T = 1 if problem == "lt": npoints_output = 20 @@ -254,9 +255,9 @@ def main(): # Hyperparameters m = 100 num_train = 1000 - num_test = 2000 + num_test = 10000 lr = 0.001 - epochs = 5000 + epochs = 50000 # Network nn = "fnn" @@ -264,7 +265,7 @@ def main(): initializer = "Glorot normal" # "He normal" or "Glorot normal" dim_x = 1 if problem in ["ode", "lt"] else 2 if nn == "opnn": - net = dde.maps.OpNN( + net = dde.maps.DeepONet( [m, 40, 40], [dim_x, 40, 40], activation, From 003c642d6f0e9999455ad61438f843559b7c3491 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Thu, 31 Oct 2024 19:27:46 +0330 Subject: [PATCH 08/23] smaller model for faster training --- src/deeponet_pde.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/deeponet_pde.py b/src/deeponet_pde.py index cf156b1..7e9ce0c 100644 --- a/src/deeponet_pde.py +++ b/src/deeponet_pde.py @@ -254,10 +254,10 @@ def main(): # Hyperparameters m = 100 - num_train = 1000 - num_test = 10000 + num_train = 100 + num_test = 1000 lr = 0.001 - epochs = 50000 + epochs = 5000 # Network nn = "fnn" From 87ee07e3c25ac2a793cf0eaabae8d7f4d0153b48 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Tue, 26 Nov 2024 23:10:33 +0330 Subject: [PATCH 09/23] basic commands added. --- src/deeponet_pde.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/deeponet_pde.py b/src/deeponet_pde.py index 7e9ce0c..c8d7cb7 100644 --- a/src/deeponet_pde.py +++ b/src/deeponet_pde.py @@ -1,5 +1,6 @@ from __future__ import absolute_import, division, print_function +import argparse import itertools import deepxde as dde @@ -157,7 +158,7 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): X_test_trim = trim_to_65535(X_test)[0] y_test_trim = trim_to_65535(y_test)[0] if nn == "opnn": - data = dde.data.OpDataSet( + data = dde.data.Triple( X_train=X_train, y_train=y_train, X_test=X_test_trim, y_test=y_test_trim ) else: @@ -221,14 +222,14 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): test_u_advd(nn, system, T, m, model, data, lambda x: u[i], str(i) + ".dat") -def main(): +def main(args): # Problems: # - "lt": Legendre transform # - "ode": Antiderivative, Nonlinear ODE, Gravity pendulum # - "dr": Diffusion-reaction # - "cvc": Advection # - "advd": Advection-diffusion - problem = "advd" + problem = args.problem T = 1 if problem == "lt": npoints_output = 20 @@ -260,7 +261,7 @@ def main(): epochs = 5000 # Network - nn = "fnn" + nn = "opnn" activation = "relu" initializer = "Glorot normal" # "He normal" or "Glorot normal" dim_x = 1 if problem in ["ode", "lt"] else 2 @@ -282,4 +283,19 @@ def main(): if __name__ == "__main__": - main() + parser = argparse.ArgumentParser() + parser.add_argument('-p','--problem', type=str, choices=['lt','ode', 'dr', 'cvc', 'advd'], help="Type of differential equation", required=True) + parser.add_argument('-t', type=int, default=1, help="Final time in domain (defualt=1)") + parser.add_argument('-m', type=int, help="number of sensors", required=True) + parser.add_argument('--num-train', type=int, help="number of train data", required=True) + parser.add_argument('--num-test', type=int, help="number of test data", required=True) + parser.add_argument('--lr', type=int, default=1e-3, help="learning rate (default=1e-3)") + parser.add_argument('--epochs', type=int, help="number of epochs", required=True) + parser.add_argument('--nn', type=str, choices=['fnn', 'opnn', 'resnet'], help="Type of nueral network", default='fnn') + parser.add_argument('--activation', type=str, choices=['elu', 'gelu', 'relu', 'selu', 'sigmoid', 'silu', 'sin', 'swish', 'tanh'], help="Activation function", default='relu') + parser.add_argument('--init', type=str, help="Activation function", default='relu') + args = parser.parse_args() + print(args.m) + main(args) + + From de6c8465581238da45cc226bb60850f91cec9d2e Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Wed, 27 Nov 2024 00:00:49 +0330 Subject: [PATCH 10/23] necessary commands added. --- src/deeponet_pde.py | 62 +++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/src/deeponet_pde.py b/src/deeponet_pde.py index c8d7cb7..d29c9d8 100644 --- a/src/deeponet_pde.py +++ b/src/deeponet_pde.py @@ -21,7 +21,7 @@ def test_u_lt(nn, system, T, m, model, data, u, fname): ns = np.arange(system.npoints_output)[:, None] X_test = [np.tile(sensor_value, (system.npoints_output, 1)), ns] y_test = s - if nn != "opnn": + if nn != "deeponet": X_test = merge_values(X_test) y_pred = model.predict(data.transform_inputs(X_test)) np.savetxt("test/u_" + fname, sensor_value) @@ -35,7 +35,7 @@ def test_u_ode(nn, system, T, m, model, data, u, fname, num=100): x = np.linspace(0, T, num=num)[:, None] X_test = [np.tile(sensor_values.T, (num, 1)), x] y_test = system.eval_s_func(u, x) - if nn != "opnn": + if nn != "deeponet": X_test = merge_values(X_test) y_pred = model.predict(data.transform_inputs(X_test)) np.savetxt(fname, np.hstack((x, y_test, y_pred))) @@ -51,7 +51,7 @@ def test_u_dr(nn, system, T, m, model, data, u, fname): xt = xt * [1 / (m - 1), T / (system.Nt - 1)] X_test = [np.tile(sensor_value, (m * system.Nt, 1)), xt] y_test = s.reshape([m * system.Nt, 1]) - if nn != "opnn": + if nn != "deeponet": X_test = merge_values(X_test) y_pred = model.predict(data.transform_inputs(X_test)) np.savetxt(fname, np.hstack((xt, y_test, y_pred))) @@ -66,7 +66,7 @@ def test_u_cvc(nn, system, T, m, model, data, u, fname): xt = xt * [1 / (m - 1), T / (system.Nt - 1)] X_test = [np.tile(sensor_value, (m * system.Nt, 1)), xt] y_test = s.reshape([m * system.Nt, 1]) - if nn != "opnn": + if nn != "deeponet": X_test = merge_values(X_test) y_pred = model.predict(data.transform_inputs(X_test)) np.savetxt("test/u_" + fname, sensor_value) @@ -82,7 +82,7 @@ def test_u_advd(nn, system, T, m, model, data, u, fname): xt = xt * [1 / (m - 1), T / (system.Nt - 1)] X_test = [np.tile(sensor_value, (m * system.Nt, 1)), xt] y_test = s.reshape([m * system.Nt, 1]) - if nn != "opnn": + if nn != "deeponet": X_test = merge_values(X_test) y_pred = model.predict(data.transform_inputs(X_test)) np.savetxt("test/u_" + fname, sensor_value) @@ -142,7 +142,7 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): X_train, y_train = system.gen_operator_data(space, m, num_train) X_test, y_test = system.gen_operator_data(space, m, num_test) - if nn != "opnn": + if nn != "deeponet": X_train = merge_values(X_train) X_test = merge_values(X_test) @@ -157,7 +157,7 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): X_test_trim = trim_to_65535(X_test)[0] y_test_trim = trim_to_65535(y_test)[0] - if nn == "opnn": + if nn == "deeponet": data = dde.data.Triple( X_train=X_train, y_train=y_train, X_test=X_test_trim, y_test=y_test_trim ) @@ -223,6 +223,7 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): def main(args): + print(args) # Problems: # - "lt": Legendre transform # - "ode": Antiderivative, Nonlinear ODE, Gravity pendulum @@ -230,7 +231,7 @@ def main(args): # - "cvc": Advection # - "advd": Advection-diffusion problem = args.problem - T = 1 + T = args.t if problem == "lt": npoints_output = 20 system = lt_system(npoints_output) @@ -254,25 +255,26 @@ def main(args): # space = GRF(T, length_scale=0.2, N=1000 * T, interp="cubic") # Hyperparameters - m = 100 - num_train = 100 - num_test = 1000 - lr = 0.001 - epochs = 5000 + m = args.m + num_train = args.num_train + num_test = args.num_test + lr = args.lr + epochs = args.epochs # Network - nn = "opnn" - activation = "relu" - initializer = "Glorot normal" # "He normal" or "Glorot normal" + nn = args.nn + activation = args.activation + initializer = args.init # "He normal" or "Glorot normal" + print(initializer) dim_x = 1 if problem in ["ode", "lt"] else 2 - if nn == "opnn": + if nn == "deeponet": net = dde.maps.DeepONet( [m, 40, 40], [dim_x, 40, 40], activation, initializer, use_bias=True, - stacked=False, + stacked=args.stacked, ) elif nn == "fnn": net = dde.maps.FNN([m + dim_x] + [100] * 2 + [1], activation, initializer) @@ -283,19 +285,35 @@ def main(args): if __name__ == "__main__": + + def process_initializer(value): + if value == 'Glorot': + return 'Glorot normal' + else: + return 'He normal' + parser = argparse.ArgumentParser() parser.add_argument('-p','--problem', type=str, choices=['lt','ode', 'dr', 'cvc', 'advd'], help="Type of differential equation", required=True) parser.add_argument('-t', type=int, default=1, help="Final time in domain (defualt=1)") parser.add_argument('-m', type=int, help="number of sensors", required=True) parser.add_argument('--num-train', type=int, help="number of train data", required=True) parser.add_argument('--num-test', type=int, help="number of test data", required=True) - parser.add_argument('--lr', type=int, default=1e-3, help="learning rate (default=1e-3)") + parser.add_argument('--lr', type=float, default=1e-3, help="learning rate (default=1e-3)") parser.add_argument('--epochs', type=int, help="number of epochs", required=True) - parser.add_argument('--nn', type=str, choices=['fnn', 'opnn', 'resnet'], help="Type of nueral network", default='fnn') + parser.add_argument('--nn', type=str, choices=['fnn', 'deeponet', 'resnet'], help="Type of nueral network", default='deeponet') parser.add_argument('--activation', type=str, choices=['elu', 'gelu', 'relu', 'selu', 'sigmoid', 'silu', 'sin', 'swish', 'tanh'], help="Activation function", default='relu') - parser.add_argument('--init', type=str, help="Activation function", default='relu') + parser.add_argument( + '--init', + type=str, + choices=['He', 'Glorot'], + default='Glorot', # Default initializer + help="Specify the initializer (choose from 'He [normal]', 'Glorot [normal]')" + ) + parser.add_argument('--stacked',type=str,default=False,help="Specify whether to use stacked architecture (usage for --nn is 'deeponet')") args = parser.parse_args() - print(args.m) + args.init = process_initializer(args.init) + args.stacked = args.stacked.lower() == 'true' + print(args.init) main(args) From ebe3542cab9ba9ecd8d60e3db9dab7affd16c21f Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Wed, 27 Nov 2024 00:02:12 +0330 Subject: [PATCH 11/23] redundant prints removed. --- src/deeponet_pde.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/deeponet_pde.py b/src/deeponet_pde.py index d29c9d8..f5475a5 100644 --- a/src/deeponet_pde.py +++ b/src/deeponet_pde.py @@ -223,7 +223,6 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): def main(args): - print(args) # Problems: # - "lt": Legendre transform # - "ode": Antiderivative, Nonlinear ODE, Gravity pendulum @@ -265,7 +264,6 @@ def main(args): nn = args.nn activation = args.activation initializer = args.init # "He normal" or "Glorot normal" - print(initializer) dim_x = 1 if problem in ["ode", "lt"] else 2 if nn == "deeponet": net = dde.maps.DeepONet( @@ -313,7 +311,6 @@ def process_initializer(value): args = parser.parse_args() args.init = process_initializer(args.init) args.stacked = args.stacked.lower() == 'true' - print(args.init) main(args) From d1b599d2d9c077d7da27445dce4db710e487549e Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Wed, 27 Nov 2024 16:38:02 +0330 Subject: [PATCH 12/23] Minor tensorflow 2 compatibility solved. --- src/deeponet_pde.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/deeponet_pde.py b/src/deeponet_pde.py index f5475a5..cdc44b3 100644 --- a/src/deeponet_pde.py +++ b/src/deeponet_pde.py @@ -6,7 +6,6 @@ import deepxde as dde import numpy as np import tensorflow as tf - from spaces import GRF, FiniteChebyshev, FinitePowerSeries from system import ADVDSystem, CVCSystem, DRSystem, LTSystem, ODESystem from utils import (mean_squared_error_outlier, merge_values, safe_test, @@ -142,6 +141,7 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): X_train, y_train = system.gen_operator_data(space, m, num_train) X_test, y_test = system.gen_operator_data(space, m, num_test) + if nn != "deeponet": X_train = merge_values(X_train) X_test = merge_values(X_test) @@ -157,9 +157,19 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): X_test_trim = trim_to_65535(X_test)[0] y_test_trim = trim_to_65535(y_test)[0] + + if nn == "deeponet": + X_train = [arr.astype(dtype=np.float32) for arr in X_train] + y_train = [arr.astype(dtype=np.float32) for arr in y_train] + + y_train = np.concatenate([np.array(i, dtype=np.float32) for i in y_train]) + y_test = np.concatenate([np.array(i, dtype=np.float32) for i in y_test]) data = dde.data.Triple( - X_train=X_train, y_train=y_train, X_test=X_test_trim, y_test=y_test_trim + X_train=X_train, + y_train=y_train, + X_test=X_test, + y_test=y_test, ) else: data = dde.data.DataSet( @@ -169,12 +179,12 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): model = dde.Model(data, net) model.compile("adam", lr=lr, metrics=[mean_squared_error_outlier]) checker = dde.callbacks.ModelCheckpoint( - "model/model.ckpt", save_better_only=True, period=1000 + "model/model", save_better_only=True, period=1000 ) losshistory, train_state = model.train(epochs=epochs, callbacks=[checker]) print("# Parameters:", np.sum([np.prod(v.get_shape().as_list()) for v in tf.compat.v1.trainable_variables()])) dde.saveplot(losshistory, train_state, issave=True, isplot=True) - model.restore("model/model.ckpt-" + str(train_state.best_step), verbose=1) + model.restore(f"model/model-{train_state.best_step}.weights.h5", verbose=1) safe_test(model, data, X_test, y_test) tests = [ @@ -271,8 +281,6 @@ def main(args): [dim_x, 40, 40], activation, initializer, - use_bias=True, - stacked=args.stacked, ) elif nn == "fnn": net = dde.maps.FNN([m + dim_x] + [100] * 2 + [1], activation, initializer) From a4a2616a1ea5d336fa60b70e99e4f120a927585d Mon Sep 17 00:00:00 2001 From: amir Date: Wed, 27 Nov 2024 19:07:43 +0330 Subject: [PATCH 13/23] major bugs for checkpoints solved --- src/deeponet_pde.py | 23 +++++++---------------- src/utils.py | 6 ++---- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/deeponet_pde.py b/src/deeponet_pde.py index cdc44b3..c4c867f 100644 --- a/src/deeponet_pde.py +++ b/src/deeponet_pde.py @@ -36,7 +36,9 @@ def test_u_ode(nn, system, T, m, model, data, u, fname, num=100): y_test = system.eval_s_func(u, x) if nn != "deeponet": X_test = merge_values(X_test) - y_pred = model.predict(data.transform_inputs(X_test)) + + X_test = tuple([arr.astype(dtype=np.float32) for arr in X_test]) + y_pred = model.predict(X_test) np.savetxt(fname, np.hstack((x, y_test, y_pred))) print("L2relative error:", dde.metrics.l2_relative_error(y_test, y_pred)) @@ -141,7 +143,6 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): X_train, y_train = system.gen_operator_data(space, m, num_train) X_test, y_test = system.gen_operator_data(space, m, num_test) - if nn != "deeponet": X_train = merge_values(X_train) X_test = merge_values(X_test) @@ -157,19 +158,9 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): X_test_trim = trim_to_65535(X_test)[0] y_test_trim = trim_to_65535(y_test)[0] - - if nn == "deeponet": - X_train = [arr.astype(dtype=np.float32) for arr in X_train] - y_train = [arr.astype(dtype=np.float32) for arr in y_train] - - y_train = np.concatenate([np.array(i, dtype=np.float32) for i in y_train]) - y_test = np.concatenate([np.array(i, dtype=np.float32) for i in y_test]) data = dde.data.Triple( - X_train=X_train, - y_train=y_train, - X_test=X_test, - y_test=y_test, + X_train=X_train, y_train=y_train, X_test=X_test_trim, y_test=y_test_trim ) else: data = dde.data.DataSet( @@ -184,7 +175,7 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): losshistory, train_state = model.train(epochs=epochs, callbacks=[checker]) print("# Parameters:", np.sum([np.prod(v.get_shape().as_list()) for v in tf.compat.v1.trainable_variables()])) dde.saveplot(losshistory, train_state, issave=True, isplot=True) - model.restore(f"model/model-{train_state.best_step}.weights.h5", verbose=1) + model.restore("model/model-" + str(train_state.best_step) + ".ckpt", verbose=1) safe_test(model, data, X_test, y_test) tests = [ @@ -281,6 +272,8 @@ def main(args): [dim_x, 40, 40], activation, initializer, + use_bias=True, + stacked=args.stacked, ) elif nn == "fnn": net = dde.maps.FNN([m + dim_x] + [100] * 2 + [1], activation, initializer) @@ -320,5 +313,3 @@ def process_initializer(value): args.init = process_initializer(args.init) args.stacked = args.stacked.lower() == 'true' main(args) - - diff --git a/src/utils.py b/src/utils.py index 4f9af3a..b834a98 100644 --- a/src/utils.py +++ b/src/utils.py @@ -1,6 +1,4 @@ -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function +from __future__ import absolute_import, division, print_function import sys import time @@ -53,7 +51,7 @@ def is_nonempty(X): X = X_test while is_nonempty(X): X_add, X = trim_to_65535(X) - y_pred.append(model.predict(data.transform_inputs(X_add))) + y_pred.append(model.predict(X_add)) y_pred = np.vstack(y_pred) error = np.mean((y_test - y_pred) ** 2) print("Test MSE: {}".format(error)) From 68d5769d6189cf94f3c407535e263096d2b44cba Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Sun, 1 Dec 2024 23:00:34 +0330 Subject: [PATCH 14/23] Legendre transform and deeponet compatibility bugs fixed. --- .gitignore | 4 +++- requirements.txt | Bin 2386 -> 2858 bytes src/deeponet_pde.py | 32 ++++++++++++++++++++------------ src/spaces.py | 9 +++------ src/system.py | 18 ++++++++---------- 5 files changed, 34 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index 0317b28..6e9a1cf 100644 --- a/.gitignore +++ b/.gitignore @@ -176,4 +176,6 @@ pyrightconfig.json *.dat # Model CheckPoints -model \ No newline at end of file +model + +test \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 2906345421b75478c73b789cd68a1cb6203c3ca2..31ef45c74c95d09290683ba5cda3b91504aa0c48 100644 GIT binary patch delta 481 zcmca4v`TD(mwX~aGD8MKDnkiFJ`m{+XQln<>X?v+l;1@``JY&Td{LZ&SUog^8A6kGwfWl5OXtu_9lYEy9gelh72%O xJi>WExl~|yg5m)hMo<&V7>y@8bLfkw0bQ02R8s`@DO}y;RF217AXh;A3IJ~kTi^fy delta 113 zcmZ1_c1dW0*T#ZFjFYD^&0#fW&|@&$Y{{(1I5~%nYjO%p1gjBH$YAqR7I8*yQy|lb z!2(DcPiALRo?OQEWO5(7)Z}OEe3MVHpJ23@oXH_Sc@u{Rkd@8Z&1f?DJE#6+FRp7` MW*|ctcp11D03ewjk^lez diff --git a/src/deeponet_pde.py b/src/deeponet_pde.py index c4c867f..c269feb 100644 --- a/src/deeponet_pde.py +++ b/src/deeponet_pde.py @@ -22,7 +22,8 @@ def test_u_lt(nn, system, T, m, model, data, u, fname): y_test = s if nn != "deeponet": X_test = merge_values(X_test) - y_pred = model.predict(data.transform_inputs(X_test)) + X_test = tuple([arr.astype(dtype=np.float32) for arr in X_test]) + y_pred = model.predict(X_test) np.savetxt("test/u_" + fname, sensor_value) np.savetxt("test/s_" + fname, np.hstack((ns, y_test, y_pred))) @@ -54,7 +55,9 @@ def test_u_dr(nn, system, T, m, model, data, u, fname): y_test = s.reshape([m * system.Nt, 1]) if nn != "deeponet": X_test = merge_values(X_test) - y_pred = model.predict(data.transform_inputs(X_test)) + + X_test = tuple([arr.astype(dtype=np.float32) for arr in X_test]) + y_pred = model.predict(X_test) np.savetxt(fname, np.hstack((xt, y_test, y_pred))) @@ -69,7 +72,9 @@ def test_u_cvc(nn, system, T, m, model, data, u, fname): y_test = s.reshape([m * system.Nt, 1]) if nn != "deeponet": X_test = merge_values(X_test) - y_pred = model.predict(data.transform_inputs(X_test)) + + X_test = tuple([arr.astype(dtype=np.float32) for arr in X_test]) + y_pred = model.predict(X_test) np.savetxt("test/u_" + fname, sensor_value) np.savetxt("test/s_" + fname, np.hstack((xt, y_test, y_pred))) @@ -85,14 +90,16 @@ def test_u_advd(nn, system, T, m, model, data, u, fname): y_test = s.reshape([m * system.Nt, 1]) if nn != "deeponet": X_test = merge_values(X_test) - y_pred = model.predict(data.transform_inputs(X_test)) + + X_test = tuple([arr.astype(dtype=np.float32) for arr in X_test]) + y_pred = model.predict(X_test) np.savetxt("test/u_" + fname, sensor_value) np.savetxt("test/s_" + fname, np.hstack((xt, y_test, y_pred))) -def lt_system(npoints_output): +def lt_system(npoints_output, T): """Legendre transform""" - return LTSystem(npoints_output) + return LTSystem(npoints_output, T) def ode_system(T): @@ -198,7 +205,7 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): if problem == "lt": features = space.random(10) - sensors = np.linspace(0, 2, num=m)[:, None] + sensors = np.linspace(0, T, num=m)[:, None] u = space.eval_u(features, sensors) for i in range(u.shape[0]): test_u_lt(nn, system, T, m, model, data, lambda x: u[i], str(i) + ".dat") @@ -234,7 +241,7 @@ def main(args): T = args.t if problem == "lt": npoints_output = 20 - system = lt_system(npoints_output) + system = lt_system(npoints_output, T) elif problem == "ode": system = ode_system(T) elif problem == "dr": @@ -251,8 +258,8 @@ def main(args): # space = FinitePowerSeries(N=100, M=1) # space = FiniteChebyshev(N=20, M=1) # space = GRF(2, length_scale=0.2, N=2000, interp="cubic") # "lt" - space = GRF(1, length_scale=0.2, N=1000, interp="cubic") - # space = GRF(T, length_scale=0.2, N=1000 * T, interp="cubic") + # space = GRF(1, length_scale=0.2, N=1000, interp="cubic") + space = GRF(T, length_scale=0.2, N=1000 * T, interp="cubic") # Hyperparameters m = args.m @@ -308,8 +315,9 @@ def process_initializer(value): default='Glorot', # Default initializer help="Specify the initializer (choose from 'He [normal]', 'Glorot [normal]')" ) - parser.add_argument('--stacked',type=str,default=False,help="Specify whether to use stacked architecture (usage for --nn is 'deeponet')") + parser.add_argument('--stacked',type=str,default='False',help="Specify whether to use stacked architecture (usage for --nn is 'deeponet')") args = parser.parse_args() args.init = process_initializer(args.init) - args.stacked = args.stacked.lower() == 'true' + if args.nn == 'deeponet': + args.stacked = args.stacked.lower() == 'true' main(args) diff --git a/src/spaces.py b/src/spaces.py index 2734a13..ad9f707 100644 --- a/src/spaces.py +++ b/src/spaces.py @@ -1,14 +1,11 @@ -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function +from __future__ import absolute_import, division, print_function +import config import matplotlib.pyplot as plt import numpy as np from pathos.pools import ProcessPool -from scipy import linalg, interpolate +from scipy import interpolate, linalg from sklearn import gaussian_process as gp - -import config from utils import eig diff --git a/src/system.py b/src/system.py index eef6c69..5793bf7 100644 --- a/src/system.py +++ b/src/system.py @@ -1,28 +1,26 @@ -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function +from __future__ import absolute_import, division, print_function +import config import numpy as np +from ADR_solver import solve_ADR +from ADVD_solver import solve_ADVD +from CVC_solver import solve_CVC from pathos.pools import ProcessPool from scipy import interpolate from scipy.integrate import solve_ivp from scipy.special import legendre - -import config -from ADR_solver import solve_ADR -from ADVD_solver import solve_ADVD -from CVC_solver import solve_CVC from utils import timing class LTSystem(object): - def __init__(self, npoints_output): + def __init__(self, npoints_output, T): """Legendre transform J_n{f(x)}. Args: npoints_output: For a input function, choose n=0,1,2,...,`npoints_output`-1 as data. """ self.npoints_output = npoints_output + self.T = T @timing def gen_operator_data(self, space, m, num): @@ -30,7 +28,7 @@ def gen_operator_data(self, space, m, num): """ print("Generating operator data...", flush=True) features = space.random(num) - sensors = np.linspace(0, 2, num=m)[:, None] + sensors = np.linspace(0, self.T, num=m)[:, None] sensor_values = space.eval_u(features, sensors) sensor_values_tile = np.tile(sensor_values, (1, self.npoints_output)).reshape( From a1ee9c8d6308388c9e820eb27ce29e01176039b2 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Sun, 15 Dec 2024 12:54:29 +0330 Subject: [PATCH 15/23] Stop tracking .gitignore --- .gitignore | 181 ----------------------------------------------------- 1 file changed, 181 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6e9a1cf..0000000 --- a/.gitignore +++ /dev/null @@ -1,181 +0,0 @@ -### Python ### -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -#pdm.lock -# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it -# in version control. -# https://pdm.fming.dev/#use-with-ide -.pdm.toml - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# PyCharm -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ - -### Python Patch ### -# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration -poetry.toml - -# ruff -.ruff_cache/ - -# LSP config files -pyrightconfig.json - -# End of https://www.toptal.com/developers/gitignore/api/python - -# train- test data -*.dat - -# Model CheckPoints -model - -test \ No newline at end of file From f4a89ee05200c50d46deb478ff7b7fd0dc982495 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Sun, 15 Dec 2024 13:07:11 +0330 Subject: [PATCH 16/23] import order resolved. redundant python2 imports removed. --- src/deeponet_pde.py | 4 +--- src/spaces.py | 5 ++--- src/system.py | 11 +++++------ src/utils.py | 2 -- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/deeponet_pde.py b/src/deeponet_pde.py index c269feb..09205f2 100644 --- a/src/deeponet_pde.py +++ b/src/deeponet_pde.py @@ -1,11 +1,9 @@ -from __future__ import absolute_import, division, print_function - import argparse import itertools - import deepxde as dde import numpy as np import tensorflow as tf + from spaces import GRF, FiniteChebyshev, FinitePowerSeries from system import ADVDSystem, CVCSystem, DRSystem, LTSystem, ODESystem from utils import (mean_squared_error_outlier, merge_values, safe_test, diff --git a/src/spaces.py b/src/spaces.py index ad9f707..03f99e5 100644 --- a/src/spaces.py +++ b/src/spaces.py @@ -1,12 +1,11 @@ -from __future__ import absolute_import, division, print_function - -import config import matplotlib.pyplot as plt import numpy as np from pathos.pools import ProcessPool from scipy import interpolate, linalg from sklearn import gaussian_process as gp + from utils import eig +import config class FinitePowerSeries: diff --git a/src/system.py b/src/system.py index 5793bf7..7ac6ab2 100644 --- a/src/system.py +++ b/src/system.py @@ -1,15 +1,14 @@ -from __future__ import absolute_import, division, print_function - -import config import numpy as np -from ADR_solver import solve_ADR -from ADVD_solver import solve_ADVD -from CVC_solver import solve_CVC from pathos.pools import ProcessPool from scipy import interpolate from scipy.integrate import solve_ivp from scipy.special import legendre + +from ADR_solver import solve_ADR +from ADVD_solver import solve_ADVD +from CVC_solver import solve_CVC from utils import timing +import config class LTSystem(object): diff --git a/src/utils.py b/src/utils.py index b834a98..cd5478a 100644 --- a/src/utils.py +++ b/src/utils.py @@ -1,5 +1,3 @@ -from __future__ import absolute_import, division, print_function - import sys import time from functools import wraps From 358c03ee055e55e7fcde8bfe6dd16e5f1d043c15 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Sat, 18 Jan 2025 11:58:25 +0330 Subject: [PATCH 17/23] Import ordering fixed. --- src/spaces.py | 4 ++-- src/system.py | 3 ++- src/utils.py | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/spaces.py b/src/spaces.py index 03f99e5..44720e6 100644 --- a/src/spaces.py +++ b/src/spaces.py @@ -1,11 +1,11 @@ import matplotlib.pyplot as plt import numpy as np +import config + from pathos.pools import ProcessPool from scipy import interpolate, linalg from sklearn import gaussian_process as gp - from utils import eig -import config class FinitePowerSeries: diff --git a/src/system.py b/src/system.py index 7ac6ab2..793d650 100644 --- a/src/system.py +++ b/src/system.py @@ -1,4 +1,6 @@ import numpy as np +import config + from pathos.pools import ProcessPool from scipy import interpolate from scipy.integrate import solve_ivp @@ -8,7 +10,6 @@ from ADVD_solver import solve_ADVD from CVC_solver import solve_CVC from utils import timing -import config class LTSystem(object): diff --git a/src/utils.py b/src/utils.py index cd5478a..ae69132 100644 --- a/src/utils.py +++ b/src/utils.py @@ -1,8 +1,9 @@ import sys import time +import numpy as np + from functools import wraps -import numpy as np def timing(f): From b223d3a7819907e961af161cfa67f0c7dbc33ea1 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Mon, 3 Feb 2025 22:28:55 +0330 Subject: [PATCH 18/23] fixing default advd example. --- src/deeponet_pde.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/deeponet_pde.py b/src/deeponet_pde.py index 09205f2..ac443c6 100644 --- a/src/deeponet_pde.py +++ b/src/deeponet_pde.py @@ -136,7 +136,7 @@ def cvc_system(T, npoints_output): def advd_system(T, npoints_output): """Advection-diffusion""" # source term - f = 10 + f = 1 # boundary condition g = [3 , 0] Nt = 100 @@ -152,15 +152,6 @@ def run(problem, system, space, T, m, nn, net, lr, epochs, num_train, num_test): X_train = merge_values(X_train) X_test = merge_values(X_test) - # np.savez_compressed("train.npz", X_train0=X_train[0], X_train1=X_train[1], y_train=y_train) - # np.savez_compressed("test.npz", X_test0=X_test[0], X_test1=X_test[1], y_test=y_test) - # return - - # d = np.load("train.npz") - # X_train, y_train = (d["X_train0"], d["X_train1"]), d["y_train"] - # d = np.load("test.npz") - # X_test, y_test = (d["X_test0"], d["X_test1"]), d["y_test"] - X_test_trim = trim_to_65535(X_test)[0] y_test_trim = trim_to_65535(y_test)[0] if nn == "deeponet": From 9c951fe19a23e39535143039d51200b0b560f849 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Tue, 4 Feb 2025 22:54:42 +0330 Subject: [PATCH 19/23] including test folder --- .gitignore | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0317b28 --- /dev/null +++ b/.gitignore @@ -0,0 +1,179 @@ +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +### Python Patch ### +# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration +poetry.toml + +# ruff +.ruff_cache/ + +# LSP config files +pyrightconfig.json + +# End of https://www.toptal.com/developers/gitignore/api/python + +# train- test data +*.dat + +# Model CheckPoints +model \ No newline at end of file From ca6143cf6029bcdeb4ef898debdea581304036e5 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Tue, 4 Feb 2025 22:59:12 +0330 Subject: [PATCH 20/23] including test folder for demo. --- .gitignore | 2 +- src/test/u_xsin2x.dat | 200 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 src/test/u_xsin2x.dat diff --git a/.gitignore b/.gitignore index 0317b28..f597601 100644 --- a/.gitignore +++ b/.gitignore @@ -173,7 +173,7 @@ pyrightconfig.json # End of https://www.toptal.com/developers/gitignore/api/python # train- test data -*.dat +src/*.dat # Model CheckPoints model \ No newline at end of file diff --git a/src/test/u_xsin2x.dat b/src/test/u_xsin2x.dat new file mode 100644 index 0000000..4965f69 --- /dev/null +++ b/src/test/u_xsin2x.dat @@ -0,0 +1,200 @@ +-2.449293598294706414e-16 +-6.247140386229508430e-02 +-1.234278516995221536e-01 +-1.826339278015862710e-01 +-2.398662101142151615e-01 +-2.949141106744621044e-01 +-3.475806450899210365e-01 +-3.976831282733103712e-01 +-4.450537940157768269e-01 +-4.895403363622923276e-01 +-5.310063711388876007e-01 +-5.693318163723517511e-01 +-6.044131907367198409e-01 +-6.361638295552978217e-01 +-6.645140182805172602e-01 +-6.894110437645856182e-01 +-7.108191640199694739e-01 +-7.287194975484470039e-01 +-7.431098336890122891e-01 +-7.540043657966934987e-01 +-7.614333494146656722e-01 +-7.654426879393710914e-01 +-7.660934486011926614e-01 +-7.634613118901328876e-01 +-7.576359578456141053e-01 +-7.487203929006497338e-01 +-7.368302212221194969e-01 +-7.220928647196223071e-01 +-7.046467361044411737e-01 +-6.846403695666789524e-01 +-6.622315138018635139e-01 +-6.375861922576594454e-01 +-6.108777355862384795e-01 +-5.822857913779654337e-01 +-5.519953163170676635e-01 +-5.201955559397164475e-01 +-4.870790171894289200e-01 +-4.528404389539671948e-01 +-4.176757657321802375e-01 +-3.817811295188132115e-01 +-3.453518449106385835e-01 +-3.085814223288582125e-01 +-2.716606041213081024e-01 +-2.347764281542268350e-01 +-1.981113233281935060e-01 +-1.618422412571812186e-01 +-1.261398281345901540e-01 +-9.116764057678600208e-02 +-5.708140898422767867e-02 +-2.402835169410708072e-02 +7.853457082161030903e-03 +3.843566283681020684e-02 +6.760014746417307430e-02 +9.523948499992025696e-02 +1.212573346446219197e-01 +1.455687696452706847e-01 +1.681005409436430176e-01 +1.887912748390666029e-01 +2.075916042536768424e-01 +2.244642335289030732e-01 +2.393839370210530948e-01 +2.523374920998461279e-01 +2.633235474849146551e-01 +2.723524281800887570e-01 +2.794458785821167246e-01 +2.846367456478348101e-01 +2.879686043002391282e-01 +2.894953275379827384e-01 +2.892806039832085951e-01 +2.873974058580418545e-01 +2.839274106192956615e-01 +2.789603797028927246e-01 +2.725934980331163326e-01 +2.649306781361548957e-01 +2.560818328616334405e-01 +2.461621208591980303e-01 +2.352911690790820132e-01 +2.235922766654025728e-01 +2.111916046882833797e-01 +1.982173562154420920e-01 +1.847989512554273073e-01 +1.710662011131279525e-01 +1.571484866835205496e-01 +1.431739451720118184e-01 +1.292686696693844395e-01 +1.155559259266360356e-01 +1.021553905703577320e-01 +8.918241487328300299e-02 +7.674731804793921697e-02 +6.495471386468223973e-02 +5.390287420968058185e-02 +4.368313299457065452e-02 +3.437933360856904041e-02 +2.606732286693681094e-02 +1.881449415801629901e-02 +1.267938222589510763e-02 +7.711311748411270664e-03 +3.950101582091727383e-03 +1.425826248163482865e-03 +1.586359284663859564e-04 +1.586359284663789362e-04 +1.425826248163482865e-03 +3.950101582091727383e-03 +7.711311748411270664e-03 +1.267938222589517008e-02 +1.881449415801622616e-02 +2.606732286693681094e-02 +3.437933360856904041e-02 +4.368313299457065452e-02 +5.390287420968070675e-02 +6.495471386468236463e-02 +7.674731804793921697e-02 +8.918241487328300299e-02 +1.021553905703577320e-01 +1.155559259266361882e-01 +1.292686696693845783e-01 +1.431739451720118184e-01 +1.571484866835205496e-01 +1.710662011131279525e-01 +1.847989512554274738e-01 +1.982173562154422308e-01 +2.111916046882833797e-01 +2.235922766654025728e-01 +2.352911690790820132e-01 +2.461621208591981413e-01 +2.560818328616335515e-01 +2.649306781361548402e-01 +2.725934980331163326e-01 +2.789603797028927246e-01 +2.839274106192957170e-01 +2.873974058580419100e-01 +2.892806039832085951e-01 +2.894953275379827384e-01 +2.879686043002391282e-01 +2.846367456478347546e-01 +2.794458785821166136e-01 +2.723524281800889235e-01 +2.633235474849146551e-01 +2.523374920998461279e-01 +2.393839370210530393e-01 +2.244642335289029900e-01 +2.075916042536771200e-01 +1.887912748390666029e-01 +1.681005409436430176e-01 +1.455687696452705460e-01 +1.212573346446217809e-01 +9.523948499992063166e-02 +6.760014746417307430e-02 +3.843566283681020684e-02 +7.853457082161030903e-03 +-2.402835169410753521e-02 +-5.708140898422815052e-02 +-9.116764057678600208e-02 +-1.261398281345901540e-01 +-1.618422412571812186e-01 +-1.981113233281940056e-01 +-2.347764281542273346e-01 +-2.716606041213081024e-01 +-3.085814223288582125e-01 +-3.453518449106385835e-01 +-3.817811295188136556e-01 +-4.176757657321806816e-01 +-4.528404389539671948e-01 +-4.870790171894289200e-01 +-5.201955559397164475e-01 +-5.519953163170676635e-01 +-5.822857913779658778e-01 +-6.108777355862384795e-01 +-6.375861922576594454e-01 +-6.622315138018635139e-01 +-6.846403695666789524e-01 +-7.046467361044413957e-01 +-7.220928647196223071e-01 +-7.368302212221194969e-01 +-7.487203929006497338e-01 +-7.576359578456141053e-01 +-7.634613118901329987e-01 +-7.660934486011926614e-01 +-7.654426879393710914e-01 +-7.614333494146656722e-01 +-7.540043657966934987e-01 +-7.431098336890124001e-01 +-7.287194975484473369e-01 +-7.108191640199694739e-01 +-6.894110437645856182e-01 +-6.645140182805172602e-01 +-6.361638295552979327e-01 +-6.044131907367203960e-01 +-5.693318163723517511e-01 +-5.310063711388876007e-01 +-4.895403363622923276e-01 +-4.450537940157762162e-01 +-3.976831282733110928e-01 +-3.475806450899210365e-01 +-2.949141106744621044e-01 +-2.398662101142151615e-01 +-1.826339278015854384e-01 +-1.234278516995212932e-01 +-6.247140386229508430e-02 +-2.449293598294706414e-16 From 6981a5dccb9a64554fec4fdbc9ae24c350925be9 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Mon, 24 Mar 2025 11:05:08 +0330 Subject: [PATCH 21/23] Redundant files removed. - .gitignore - requirements.txt --- .gitignore | 179 ----------------------------------------------- requirements.txt | Bin 2858 -> 0 bytes 2 files changed, 179 deletions(-) delete mode 100644 .gitignore delete mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore deleted file mode 100644 index f597601..0000000 --- a/.gitignore +++ /dev/null @@ -1,179 +0,0 @@ -### Python ### -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -#pdm.lock -# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it -# in version control. -# https://pdm.fming.dev/#use-with-ide -.pdm.toml - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# PyCharm -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ - -### Python Patch ### -# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration -poetry.toml - -# ruff -.ruff_cache/ - -# LSP config files -pyrightconfig.json - -# End of https://www.toptal.com/developers/gitignore/api/python - -# train- test data -src/*.dat - -# Model CheckPoints -model \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 31ef45c74c95d09290683ba5cda3b91504aa0c48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2858 zcma);%WjiF425Tn#G?c?NpCDzAe9|RNGyO=m3u;N<0^7&- z@v$d=eh<s=dNqU`LrGcz%+NX`|gVg9>lkmdhT;G0pjbt08 zxomCP>a&s`SZDI!Ypjv%jXV}oJ}%UXT6!UZGSiN6f{R8eFes^6(T z)M>`eCP+OoPp#8KzmF#aZ)d@ttDOmtN#|V5)?CaKzfH4Xqa&}qyyoFYC;d>tOP(D? z=P2ekj97Xpd_K;B(x_!{tOn1VgPDzlvpwRRrwiHL$6Q_InR@Oe%R+P898hgD<_}>F z)n8p3{CG;sV3&&E#%M*;OGVx4yA#GL{R&_F=nssGn1QiT)Ib%?4wa*MYl1m_lC6Q*+8@EH$qwq#dpdI zLZ_#}@pCGp6DH<p(oU+B!SOV`ch(>t8?jPr zhAMn3v9dwiiUZKI)i(hRP+KkC!gDLJ> zVL8vU_?XE}s1RN!%8S-=7gjRW-UQ=qh2QEefr*~}&;42_)b~BT*G7H}yKiAu5z6?f zEc8}a-w&mEicfu>zkz6?Otw+gyrG^Tox*;`+lh-jHP3VxSCIR|9e``t^4(xJn5_GG z>}h>3#J}HCP^qFDf7TK8rgf{gg5LoAZs6T>KF51HXo;D5gMHu1Yr=%sJz_zi=5cgZ zE~{&J-ji#?oCoTeI-2U{QU$vIH=g%0Z&b-+71epNUq{GH7naDDU-u4)R%G=QP?Zk@2Zi`%!cZ?>l~N18toSVh zL;f8@m*s_PRZU0t4zBBq_PD3Htf+!tU;YI+QdTqID^+Udt?*8Bi|>LfGyw)1CDT<#)D!)DxX}gT6-n%lP%UKiq8Uf|2uhKW?KxUI_55+j6u10w{W* AK>z>% From 524ec0e62839ad0f4f85faf2f35791fc52a3b190 Mon Sep 17 00:00:00 2001 From: Parsa Rahbari Date: Mon, 24 Mar 2025 11:07:35 +0330 Subject: [PATCH 22/23] Remove test file. --- src/test/u_xsin2x.dat | 200 ------------------------------------------ 1 file changed, 200 deletions(-) delete mode 100644 src/test/u_xsin2x.dat diff --git a/src/test/u_xsin2x.dat b/src/test/u_xsin2x.dat deleted file mode 100644 index 4965f69..0000000 --- a/src/test/u_xsin2x.dat +++ /dev/null @@ -1,200 +0,0 @@ --2.449293598294706414e-16 --6.247140386229508430e-02 --1.234278516995221536e-01 --1.826339278015862710e-01 --2.398662101142151615e-01 --2.949141106744621044e-01 --3.475806450899210365e-01 --3.976831282733103712e-01 --4.450537940157768269e-01 --4.895403363622923276e-01 --5.310063711388876007e-01 --5.693318163723517511e-01 --6.044131907367198409e-01 --6.361638295552978217e-01 --6.645140182805172602e-01 --6.894110437645856182e-01 --7.108191640199694739e-01 --7.287194975484470039e-01 --7.431098336890122891e-01 --7.540043657966934987e-01 --7.614333494146656722e-01 --7.654426879393710914e-01 --7.660934486011926614e-01 --7.634613118901328876e-01 --7.576359578456141053e-01 --7.487203929006497338e-01 --7.368302212221194969e-01 --7.220928647196223071e-01 --7.046467361044411737e-01 --6.846403695666789524e-01 --6.622315138018635139e-01 --6.375861922576594454e-01 --6.108777355862384795e-01 --5.822857913779654337e-01 --5.519953163170676635e-01 --5.201955559397164475e-01 --4.870790171894289200e-01 --4.528404389539671948e-01 --4.176757657321802375e-01 --3.817811295188132115e-01 --3.453518449106385835e-01 --3.085814223288582125e-01 --2.716606041213081024e-01 --2.347764281542268350e-01 --1.981113233281935060e-01 --1.618422412571812186e-01 --1.261398281345901540e-01 --9.116764057678600208e-02 --5.708140898422767867e-02 --2.402835169410708072e-02 -7.853457082161030903e-03 -3.843566283681020684e-02 -6.760014746417307430e-02 -9.523948499992025696e-02 -1.212573346446219197e-01 -1.455687696452706847e-01 -1.681005409436430176e-01 -1.887912748390666029e-01 -2.075916042536768424e-01 -2.244642335289030732e-01 -2.393839370210530948e-01 -2.523374920998461279e-01 -2.633235474849146551e-01 -2.723524281800887570e-01 -2.794458785821167246e-01 -2.846367456478348101e-01 -2.879686043002391282e-01 -2.894953275379827384e-01 -2.892806039832085951e-01 -2.873974058580418545e-01 -2.839274106192956615e-01 -2.789603797028927246e-01 -2.725934980331163326e-01 -2.649306781361548957e-01 -2.560818328616334405e-01 -2.461621208591980303e-01 -2.352911690790820132e-01 -2.235922766654025728e-01 -2.111916046882833797e-01 -1.982173562154420920e-01 -1.847989512554273073e-01 -1.710662011131279525e-01 -1.571484866835205496e-01 -1.431739451720118184e-01 -1.292686696693844395e-01 -1.155559259266360356e-01 -1.021553905703577320e-01 -8.918241487328300299e-02 -7.674731804793921697e-02 -6.495471386468223973e-02 -5.390287420968058185e-02 -4.368313299457065452e-02 -3.437933360856904041e-02 -2.606732286693681094e-02 -1.881449415801629901e-02 -1.267938222589510763e-02 -7.711311748411270664e-03 -3.950101582091727383e-03 -1.425826248163482865e-03 -1.586359284663859564e-04 -1.586359284663789362e-04 -1.425826248163482865e-03 -3.950101582091727383e-03 -7.711311748411270664e-03 -1.267938222589517008e-02 -1.881449415801622616e-02 -2.606732286693681094e-02 -3.437933360856904041e-02 -4.368313299457065452e-02 -5.390287420968070675e-02 -6.495471386468236463e-02 -7.674731804793921697e-02 -8.918241487328300299e-02 -1.021553905703577320e-01 -1.155559259266361882e-01 -1.292686696693845783e-01 -1.431739451720118184e-01 -1.571484866835205496e-01 -1.710662011131279525e-01 -1.847989512554274738e-01 -1.982173562154422308e-01 -2.111916046882833797e-01 -2.235922766654025728e-01 -2.352911690790820132e-01 -2.461621208591981413e-01 -2.560818328616335515e-01 -2.649306781361548402e-01 -2.725934980331163326e-01 -2.789603797028927246e-01 -2.839274106192957170e-01 -2.873974058580419100e-01 -2.892806039832085951e-01 -2.894953275379827384e-01 -2.879686043002391282e-01 -2.846367456478347546e-01 -2.794458785821166136e-01 -2.723524281800889235e-01 -2.633235474849146551e-01 -2.523374920998461279e-01 -2.393839370210530393e-01 -2.244642335289029900e-01 -2.075916042536771200e-01 -1.887912748390666029e-01 -1.681005409436430176e-01 -1.455687696452705460e-01 -1.212573346446217809e-01 -9.523948499992063166e-02 -6.760014746417307430e-02 -3.843566283681020684e-02 -7.853457082161030903e-03 --2.402835169410753521e-02 --5.708140898422815052e-02 --9.116764057678600208e-02 --1.261398281345901540e-01 --1.618422412571812186e-01 --1.981113233281940056e-01 --2.347764281542273346e-01 --2.716606041213081024e-01 --3.085814223288582125e-01 --3.453518449106385835e-01 --3.817811295188136556e-01 --4.176757657321806816e-01 --4.528404389539671948e-01 --4.870790171894289200e-01 --5.201955559397164475e-01 --5.519953163170676635e-01 --5.822857913779658778e-01 --6.108777355862384795e-01 --6.375861922576594454e-01 --6.622315138018635139e-01 --6.846403695666789524e-01 --7.046467361044413957e-01 --7.220928647196223071e-01 --7.368302212221194969e-01 --7.487203929006497338e-01 --7.576359578456141053e-01 --7.634613118901329987e-01 --7.660934486011926614e-01 --7.654426879393710914e-01 --7.614333494146656722e-01 --7.540043657966934987e-01 --7.431098336890124001e-01 --7.287194975484473369e-01 --7.108191640199694739e-01 --6.894110437645856182e-01 --6.645140182805172602e-01 --6.361638295552979327e-01 --6.044131907367203960e-01 --5.693318163723517511e-01 --5.310063711388876007e-01 --4.895403363622923276e-01 --4.450537940157762162e-01 --3.976831282733110928e-01 --3.475806450899210365e-01 --2.949141106744621044e-01 --2.398662101142151615e-01 --1.826339278015854384e-01 --1.234278516995212932e-01 --6.247140386229508430e-02 --2.449293598294706414e-16 From 41e0289210d9970640120498599bbc73a99e39b0 Mon Sep 17 00:00:00 2001 From: AmirAli Date: Sat, 31 May 2025 23:50:16 +0330 Subject: [PATCH 23/23] Rolling back previous requirements.txt --- requirements.txt | Bin 0 -> 144 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..53f314cb42853ffeef7b9ecf8dc0a0f2bcffd1a1 GIT binary patch literal 144 zcmXwy%ML&=5Jk^g;v?%7g0|5Lejc|IGK-n}oagT7HIb8Y)l{rFvY3USy)e-j@7bkA mE<@2=qdduQqLuSkle(O8feruZv$_iVGg-(hT|9$*J9q&J)*90Q literal 0 HcmV?d00001