diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000..72ef5f5 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,29 @@ +cff-version: 1.2.0 +message: "If you use this software, please cite it as below." +authors: +- family-names: "Lew" + given-names: "Ethan" + orcid: "https://orcid.org/0000-0002-6509-6846" +- family-names: "Hekal" + given-names: "Abdelrahman" + orcid: "https://orcid.org/0009-0008-9685-0558" +- family-names: "Potomkin" + given-names: "Kostiantyn" + orcid: "https://orcid.org/0000-0002-4726-8931" +- family-names: "Kochdumper" + given-names: "Niklas" + orcid: "https://orcid.org/0000-0001-6017-7623" +- family-names: "Hencey" + given-names: "Brandon" + orcid: "https://orcid.org/0000-0001-9240-7999" +- family-names: "Bak" + given-names: "Stanley" + orcid: "https://orcid.org/0000-0003-4947-9553" +- family-names: "Bogomolov" + given-names: "Sergiy" + orcid: "https://orcid.org/0000-0002-0686-0365" +title: "AutoKoopman: A Toolbox for Automated System Identification via Koopman Operator Linearization" +version: 0.30.0 +doi: 10.1007/978-3-031-45332-8_12 +date-released: 2023-10-19 +url: "https://github.com/EthanJamesLew/AutoKoopman" diff --git a/autokoopman/autokoopman.py b/autokoopman/autokoopman.py index 5f8da32..47a8855 100644 --- a/autokoopman/autokoopman.py +++ b/autokoopman/autokoopman.py @@ -75,7 +75,7 @@ def get_parameter_space(obs_type, threshold_range, rank): return ParameterSpace( "koopman-polynomial", [ - DiscreteParameter("degree", 1, 5), + DiscreteParameter("degree", 1, 3), DiscreteParameter("rank", *rank), ], ) @@ -133,7 +133,7 @@ def auto_koopman( training_data: Union[TrajectoriesData, Sequence[np.ndarray]], inputs_training_data: Optional[Sequence[np.ndarray]] = None, sampling_period: Optional[float] = None, - normalize: bool = True, + normalize: bool = False, opt: Union[str, HyperparameterTuner] = "monte-carlo", max_opt_iter: int = 100, max_epochs: int = 500, diff --git a/autokoopman/core/system.py b/autokoopman/core/system.py index 3978ef8..b88902b 100644 --- a/autokoopman/core/system.py +++ b/autokoopman/core/system.py @@ -398,6 +398,10 @@ def evolv_func_scale(t, x, i): def A(self): return self._A + @property + def koopman_operator(self): + return self._A + @property def B(self): return self._B diff --git a/environment.yml b/environment.yml index 1477062..688dcce 100644 --- a/environment.yml +++ b/environment.yml @@ -1,48 +1,48 @@ name: autokoopman channels: + - conda-forge - defaults dependencies: - - _libgcc_mutex=0.1=main - - _openmp_mutex=5.1=1_gnu - - blas=1.0=mkl - - ca-certificates=2023.01.10=h06a4308_0 - - certifi=2022.12.7=py39h06a4308_0 - - cffi=1.15.1=py39h5eee18b_3 - - flit-core=3.6.0=pyhd3eb1b0_0 - - future=0.18.2=py39h06a4308_1 - - intel-openmp=2021.4.0=h06a4308_3561 - - ld_impl_linux-64=2.38=h1181459_1 - - libffi=3.4.2=h6a678d5_6 - - libgcc-ng=11.2.0=h1234567_1 - - libgomp=11.2.0=h1234567_1 - - libprotobuf=3.20.3=he621ea3_0 - - libstdcxx-ng=11.2.0=h1234567_1 - - mkl=2021.4.0=h06a4308_640 - - mkl-service=2.4.0=py39h7f8727e_0 - - mkl_fft=1.3.1=py39hd3c417c_0 - - mkl_random=1.2.2=py39h51133e4_0 - - ncurses=6.4=h6a678d5_0 - - ninja=1.10.2=h06a4308_5 - - ninja-base=1.10.2=hd09550d_5 - - numpy-base=1.23.5=py39h31eccc5_0 - - openssl=1.1.1s=h7f8727e_0 - - pip=22.3.1=py39h06a4308_0 - - pycparser=2.21=pyhd3eb1b0_0 - - python=3.9.16=h7a1cb2a_0 - - pytorch=1.12.1=cpu_py39hb1f1ab4_1 - - pyyaml=6.0=py39h5eee18b_1 - - readline=8.2=h5eee18b_0 - - setuptools=65.6.3=py39h06a4308_0 - - six=1.16.0=pyhd3eb1b0_1 - - sqlite=3.40.1=h5082296_0 - - tk=8.6.12=h1ccaba5_0 - - typing-extensions=4.4.0=py39h06a4308_0 - - typing_extensions=4.4.0=py39h06a4308_0 - - tzdata=2022g=h04d1e81_0 - - wheel=0.37.1=pyhd3eb1b0_0 - - xz=5.2.10=h5eee18b_1 - - yaml=0.2.5=h7b6447c_0 - - zlib=1.2.13=h5eee18b_0 + - blas=1.0 + - ca-certificates=2023.08.22 + - cffi=1.15.1 + - filelock=3.9.0 + - gmp=6.2.1 + - gmpy2=2.1.2 + - jinja2=3.1.2 + - libcxx=16.0.6 + - libffi=3.3 + - libopenblas=0.3.21 + - libprotobuf=3.20.3 + - libsqlite=3.43.2 + - libuv=1.44.2 + - libzlib=1.2.13 + - llvm-openmp=14.0.6 + - markupsafe=2.1.1 + - mpc=1.1.0 + - mpfr=4.0.2 + - ncurses=6.4 + - networkx=3.1 + - ninja=1.10.2 + - ninja-base=1.10.2 + - numpy-base=1.26.0 + - openssl=1.1.1w + - pip=23.3.1 + - pycparser=2.21 + - python=3.9.0 + - pytorch=2.0.1 + - readline=8.2 + - setuptools=68.2.2 + - sleef=3.5.1 + - sqlite=3.43.2 + - sympy=1.11.1 + - tk=8.6.13 + - typing-extensions=4.7.1 + - typing_extensions=4.7.1 + - tzdata=2023c + - wheel=0.41.2 + - xz=5.2.6 + - zlib=1.2.13 - pip: - attrs==22.2.0 - cmake==3.25.2 @@ -60,7 +60,7 @@ dependencies: - kiwisolver==1.4.4 - matplotlib==3.6.3 - mpmath==1.2.1 - - numpy==1.23.1 + - numpy==1.21.0 - packaging==23.0 - pandas==1.5.3 - paramz==0.9.5 @@ -73,6 +73,7 @@ dependencies: - pytz==2022.7.1 - scikit-learn==1.0.2 - scipy==1.10.0 - - sympy==1.11.1 + - six==1.16.0 - threadpoolctl==3.1.0 + - tomli==2.0.1 - tqdm==4.64.1