GithubHelp home page GithubHelp logo

Comments (7)

Jacob-Stevens-Haas avatar Jacob-Stevens-Haas commented on July 19, 2024 1

So not specifically a bug, but our documentation of the feature_names argument really should call out that it needs to handle state and control.

Also, if the change suggested in #387 is approved, this may be clearer.

from pysindy.

SunandanAdhikary avatar SunandanAdhikary commented on July 19, 2024 1

Thanks, it runs without any error after adding inputs in feature_names.

from pysindy.

SunandanAdhikary avatar SunandanAdhikary commented on July 19, 2024

Here is the detailed error for your reference : pysindy_error.txt

pysindy_error.txt
{
	"name": "TypeError",
	"message": "ufunc 'bitwise_xor' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''",
	"stack": "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mTypeError\u001b[0m                                 Traceback (most recent call last)\nCell \u001b[1;32mIn[102], line 36\u001b[0m\n\u001b[0;32m     30\u001b[0m gen_lib \u001b[38;5;241m=\u001b[39m ps\u001b[38;5;241m.\u001b[39mGeneralizedLibrary([poly_lib, custom_lib],\n\u001b[0;32m     31\u001b[0m                                 tensor_array\u001b[38;5;241m=\u001b[39mtensoring_libs,\n\u001b[0;32m     32\u001b[0m                                 inputs_per_library\u001b[38;5;241m=\u001b[39mvaruse_libwise)\n\u001b[0;32m     34\u001b[0m model \u001b[38;5;241m=\u001b[39m ps\u001b[38;5;241m.\u001b[39mSINDy(feature_names\u001b[38;5;241m=\u001b[39mstates, optimizer\u001b[38;5;241m=\u001b[39mensemble_opt, feature_library\u001b[38;5;241m=\u001b[39mgen_lib)\n\u001b[1;32m---> 36\u001b[0m \u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx_train\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mu\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mu_train\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43mfloat\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mdp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mTs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mquiet\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[0;32m     38\u001b[0m model\u001b[38;5;241m.\u001b[39mget_feature_names()\n\u001b[0;32m     40\u001b[0m model\u001b[38;5;241m.\u001b[39mprint()\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\pysindy\\pysindy.py:414\u001b[0m, in \u001b[0;36mSINDy.fit\u001b[1;34m(self, x, t, x_dot, u, multiple_trajectories, unbias, quiet, ensemble, library_ensemble, replace, n_candidates_to_drop, n_subset, n_models, ensemble_aggregator)\u001b[0m\n\u001b[0;32m    412\u001b[0m     warnings\u001b[38;5;241m.\u001b[39mfilterwarnings(action, category\u001b[38;5;241m=\u001b[39mLinAlgWarning)\n\u001b[0;32m    413\u001b[0m     warnings\u001b[38;5;241m.\u001b[39mfilterwarnings(action, category\u001b[38;5;241m=\u001b[39m\u001b[38;5;167;01mUserWarning\u001b[39;00m)\n\u001b[1;32m--> 414\u001b[0m     \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mx_dot\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    416\u001b[0m \u001b[38;5;66;03m# New version of sklearn changes attribute name\u001b[39;00m\n\u001b[0;32m    417\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mfloat\u001b[39m(__version__[:\u001b[38;5;241m3\u001b[39m]) \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1.0\u001b[39m:\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\sklearn\\pipeline.py:402\u001b[0m, in \u001b[0;36mPipeline.fit\u001b[1;34m(self, X, y, **fit_params)\u001b[0m\n\u001b[0;32m    376\u001b[0m \u001b[38;5;124;03m\"\"\"Fit the model.\u001b[39;00m\n\u001b[0;32m    377\u001b[0m \n\u001b[0;32m    378\u001b[0m \u001b[38;5;124;03mFit all the transformers one after the other and transform the\u001b[39;00m\n\u001b[1;32m   (...)\u001b[0m\n\u001b[0;32m    399\u001b[0m \u001b[38;5;124;03m    Pipeline with fitted steps.\u001b[39;00m\n\u001b[0;32m    400\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m    401\u001b[0m fit_params_steps \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_fit_params(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_params)\n\u001b[1;32m--> 402\u001b[0m Xt \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fit(X, y, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_params_steps)\n\u001b[0;32m    403\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m _print_elapsed_time(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPipeline\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_log_message(\u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps) \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1\u001b[39m)):\n\u001b[0;32m    404\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_final_estimator \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpassthrough\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\sklearn\\pipeline.py:360\u001b[0m, in \u001b[0;36mPipeline._fit\u001b[1;34m(self, X, y, **fit_params_steps)\u001b[0m\n\u001b[0;32m    358\u001b[0m     cloned_transformer \u001b[38;5;241m=\u001b[39m clone(transformer)\n\u001b[0;32m    359\u001b[0m \u001b[38;5;66;03m# Fit or load from cache the current transformer\u001b[39;00m\n\u001b[1;32m--> 360\u001b[0m X, fitted_transformer \u001b[38;5;241m=\u001b[39m fit_transform_one_cached(\n\u001b[0;32m    361\u001b[0m     cloned_transformer,\n\u001b[0;32m    362\u001b[0m     X,\n\u001b[0;32m    363\u001b[0m     y,\n\u001b[0;32m    364\u001b[0m     \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m    365\u001b[0m     message_clsname\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPipeline\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m    366\u001b[0m     message\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_log_message(step_idx),\n\u001b[0;32m    367\u001b[0m     \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_params_steps[name],\n\u001b[0;32m    368\u001b[0m )\n\u001b[0;32m    369\u001b[0m \u001b[38;5;66;03m# Replace the transformer of the step with the fitted\u001b[39;00m\n\u001b[0;32m    370\u001b[0m \u001b[38;5;66;03m# transformer. This is necessary when loading the transformer\u001b[39;00m\n\u001b[0;32m    371\u001b[0m \u001b[38;5;66;03m# from the cache.\u001b[39;00m\n\u001b[0;32m    372\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps[step_idx] \u001b[38;5;241m=\u001b[39m (name, fitted_transformer)\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\joblib\\memory.py:349\u001b[0m, in \u001b[0;36mNotMemorizedFunc.__call__\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m    348\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m--> 349\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfunc(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\sklearn\\pipeline.py:894\u001b[0m, in \u001b[0;36m_fit_transform_one\u001b[1;34m(transformer, X, y, weight, message_clsname, message, **fit_params)\u001b[0m\n\u001b[0;32m    892\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m _print_elapsed_time(message_clsname, message):\n\u001b[0;32m    893\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(transformer, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfit_transform\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[1;32m--> 894\u001b[0m         res \u001b[38;5;241m=\u001b[39m transformer\u001b[38;5;241m.\u001b[39mfit_transform(X, y, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_params)\n\u001b[0;32m    895\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m    896\u001b[0m         res \u001b[38;5;241m=\u001b[39m transformer\u001b[38;5;241m.\u001b[39mfit(X, y, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_params)\u001b[38;5;241m.\u001b[39mtransform(X)\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\sklearn\\utils\\_set_output.py:142\u001b[0m, in \u001b[0;36m_wrap_method_output.<locals>.wrapped\u001b[1;34m(self, X, *args, **kwargs)\u001b[0m\n\u001b[0;32m    140\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(f)\n\u001b[0;32m    141\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped\u001b[39m(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m--> 142\u001b[0m     data_to_wrap \u001b[38;5;241m=\u001b[39m f(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m    143\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data_to_wrap, \u001b[38;5;28mtuple\u001b[39m):\n\u001b[0;32m    144\u001b[0m         \u001b[38;5;66;03m# only wrap the first output for cross decomposition\u001b[39;00m\n\u001b[0;32m    145\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m (\n\u001b[0;32m    146\u001b[0m             _wrap_data_with_container(method, data_to_wrap[\u001b[38;5;241m0\u001b[39m], X, \u001b[38;5;28mself\u001b[39m),\n\u001b[0;32m    147\u001b[0m             \u001b[38;5;241m*\u001b[39mdata_to_wrap[\u001b[38;5;241m1\u001b[39m:],\n\u001b[0;32m    148\u001b[0m         )\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\sklearn\\utils\\_set_output.py:142\u001b[0m, in \u001b[0;36m_wrap_method_output.<locals>.wrapped\u001b[1;34m(self, X, *args, **kwargs)\u001b[0m\n\u001b[0;32m    140\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(f)\n\u001b[0;32m    141\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped\u001b[39m(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m--> 142\u001b[0m     data_to_wrap \u001b[38;5;241m=\u001b[39m f(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m    143\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data_to_wrap, \u001b[38;5;28mtuple\u001b[39m):\n\u001b[0;32m    144\u001b[0m         \u001b[38;5;66;03m# only wrap the first output for cross decomposition\u001b[39;00m\n\u001b[0;32m    145\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m (\n\u001b[0;32m    146\u001b[0m             _wrap_data_with_container(method, data_to_wrap[\u001b[38;5;241m0\u001b[39m], X, \u001b[38;5;28mself\u001b[39m),\n\u001b[0;32m    147\u001b[0m             \u001b[38;5;241m*\u001b[39mdata_to_wrap[\u001b[38;5;241m1\u001b[39m:],\n\u001b[0;32m    148\u001b[0m         )\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\sklearn\\utils\\_set_output.py:142\u001b[0m, in \u001b[0;36m_wrap_method_output.<locals>.wrapped\u001b[1;34m(self, X, *args, **kwargs)\u001b[0m\n\u001b[0;32m    140\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(f)\n\u001b[0;32m    141\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped\u001b[39m(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m--> 142\u001b[0m     data_to_wrap \u001b[38;5;241m=\u001b[39m f(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m    143\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data_to_wrap, \u001b[38;5;28mtuple\u001b[39m):\n\u001b[0;32m    144\u001b[0m         \u001b[38;5;66;03m# only wrap the first output for cross decomposition\u001b[39;00m\n\u001b[0;32m    145\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m (\n\u001b[0;32m    146\u001b[0m             _wrap_data_with_container(method, data_to_wrap[\u001b[38;5;241m0\u001b[39m], X, \u001b[38;5;28mself\u001b[39m),\n\u001b[0;32m    147\u001b[0m             \u001b[38;5;241m*\u001b[39mdata_to_wrap[\u001b[38;5;241m1\u001b[39m:],\n\u001b[0;32m    148\u001b[0m         )\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\sklearn\\base.py:851\u001b[0m, in \u001b[0;36mTransformerMixin.fit_transform\u001b[1;34m(self, X, y, **fit_params)\u001b[0m\n\u001b[0;32m    848\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfit(X, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_params)\u001b[38;5;241m.\u001b[39mtransform(X)\n\u001b[0;32m    849\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m    850\u001b[0m     \u001b[38;5;66;03m# fit method of arity 2 (supervised transformation)\u001b[39;00m\n\u001b[1;32m--> 851\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mfit_params\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtransform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m)\u001b[49m\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\sklearn\\utils\\_set_output.py:142\u001b[0m, in \u001b[0;36m_wrap_method_output.<locals>.wrapped\u001b[1;34m(self, X, *args, **kwargs)\u001b[0m\n\u001b[0;32m    140\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(f)\n\u001b[0;32m    141\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped\u001b[39m(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m--> 142\u001b[0m     data_to_wrap \u001b[38;5;241m=\u001b[39m f(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m    143\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data_to_wrap, \u001b[38;5;28mtuple\u001b[39m):\n\u001b[0;32m    144\u001b[0m         \u001b[38;5;66;03m# only wrap the first output for cross decomposition\u001b[39;00m\n\u001b[0;32m    145\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m (\n\u001b[0;32m    146\u001b[0m             _wrap_data_with_container(method, data_to_wrap[\u001b[38;5;241m0\u001b[39m], X, \u001b[38;5;28mself\u001b[39m),\n\u001b[0;32m    147\u001b[0m             \u001b[38;5;241m*\u001b[39mdata_to_wrap[\u001b[38;5;241m1\u001b[39m:],\n\u001b[0;32m    148\u001b[0m         )\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\pysindy\\feature_library\\base.py:191\u001b[0m, in \u001b[0;36mx_sequence_or_item.<locals>.func\u001b[1;34m(self, x, *args, **kwargs)\u001b[0m\n\u001b[0;32m    189\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(x, Sequence):\n\u001b[0;32m    190\u001b[0m     xs \u001b[38;5;241m=\u001b[39m [AxesArray(xi, comprehend_axes(xi)) \u001b[38;5;28;01mfor\u001b[39;00m xi \u001b[38;5;129;01min\u001b[39;00m x]\n\u001b[1;32m--> 191\u001b[0m     result \u001b[38;5;241m=\u001b[39m wrapped_func(\u001b[38;5;28mself\u001b[39m, xs, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m    192\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(result, Sequence):  \u001b[38;5;66;03m# e.g. transform() returns x\u001b[39;00m\n\u001b[0;32m    193\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m [AxesArray(xp, comprehend_axes(xp)) \u001b[38;5;28;01mfor\u001b[39;00m xp \u001b[38;5;129;01min\u001b[39;00m result]\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\pysindy\\feature_library\\generalized_library.py:267\u001b[0m, in \u001b[0;36mGeneralizedLibrary.transform\u001b[1;34m(self, x_full)\u001b[0m\n\u001b[0;32m    264\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m i \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minputs_per_library_\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m0\u001b[39m]:\n\u001b[0;32m    265\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m i \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexclude_libs_:\n\u001b[0;32m    266\u001b[0m         xps\u001b[38;5;241m.\u001b[39mappend(\n\u001b[1;32m--> 267\u001b[0m             \u001b[43mlib\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtransform\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m    268\u001b[0m \u001b[43m                \u001b[49m\u001b[43m[\u001b[49m\u001b[43mx\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43munique\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minputs_per_library_\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m:\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\n\u001b[0;32m    269\u001b[0m \u001b[43m            \u001b[49m\u001b[43m)\u001b[49m[\u001b[38;5;241m0\u001b[39m]\n\u001b[0;32m    270\u001b[0m         )\n\u001b[0;32m    271\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m    272\u001b[0m     xps\u001b[38;5;241m.\u001b[39mappend(lib\u001b[38;5;241m.\u001b[39mtransform([x])[\u001b[38;5;241m0\u001b[39m])\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\sklearn\\utils\\_set_output.py:142\u001b[0m, in \u001b[0;36m_wrap_method_output.<locals>.wrapped\u001b[1;34m(self, X, *args, **kwargs)\u001b[0m\n\u001b[0;32m    140\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(f)\n\u001b[0;32m    141\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped\u001b[39m(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m--> 142\u001b[0m     data_to_wrap \u001b[38;5;241m=\u001b[39m f(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m    143\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data_to_wrap, \u001b[38;5;28mtuple\u001b[39m):\n\u001b[0;32m    144\u001b[0m         \u001b[38;5;66;03m# only wrap the first output for cross decomposition\u001b[39;00m\n\u001b[0;32m    145\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m (\n\u001b[0;32m    146\u001b[0m             _wrap_data_with_container(method, data_to_wrap[\u001b[38;5;241m0\u001b[39m], X, \u001b[38;5;28mself\u001b[39m),\n\u001b[0;32m    147\u001b[0m             \u001b[38;5;241m*\u001b[39mdata_to_wrap[\u001b[38;5;241m1\u001b[39m:],\n\u001b[0;32m    148\u001b[0m         )\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\pysindy\\feature_library\\base.py:191\u001b[0m, in \u001b[0;36mx_sequence_or_item.<locals>.func\u001b[1;34m(self, x, *args, **kwargs)\u001b[0m\n\u001b[0;32m    189\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(x, Sequence):\n\u001b[0;32m    190\u001b[0m     xs \u001b[38;5;241m=\u001b[39m [AxesArray(xi, comprehend_axes(xi)) \u001b[38;5;28;01mfor\u001b[39;00m xi \u001b[38;5;129;01min\u001b[39;00m x]\n\u001b[1;32m--> 191\u001b[0m     result \u001b[38;5;241m=\u001b[39m wrapped_func(\u001b[38;5;28mself\u001b[39m, xs, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m    192\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(result, Sequence):  \u001b[38;5;66;03m# e.g. transform() returns x\u001b[39;00m\n\u001b[0;32m    193\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m [AxesArray(xp, comprehend_axes(xp)) \u001b[38;5;28;01mfor\u001b[39;00m xp \u001b[38;5;129;01min\u001b[39;00m result]\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\pysindy\\feature_library\\custom_library.py:230\u001b[0m, in \u001b[0;36mCustomLibrary.transform\u001b[1;34m(self, x_full)\u001b[0m\n\u001b[0;32m    226\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m f \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfunctions:\n\u001b[0;32m    227\u001b[0m     \u001b[38;5;28;01mfor\u001b[39;00m c \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_combinations(\n\u001b[0;32m    228\u001b[0m         n_input_features, f\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__code__\u001b[39m\u001b[38;5;241m.\u001b[39mco_argcount, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minteraction_only\n\u001b[0;32m    229\u001b[0m     ):\n\u001b[1;32m--> 230\u001b[0m         xp[\u001b[38;5;241m.\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;241m.\u001b[39m, library_idx] \u001b[38;5;241m=\u001b[39m \u001b[43mf\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43mx\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mj\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mj\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mc\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    231\u001b[0m         library_idx \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m    233\u001b[0m xp \u001b[38;5;241m=\u001b[39m AxesArray(xp, comprehend_axes(xp))\n\nCell \u001b[1;32mIn[102], line 7\u001b[0m, in \u001b[0;36m<lambda>\u001b[1;34m(vx)\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[38;5;66;03m# identity_lib = ps.IdentityLibrary()\u001b[39;00m\n\u001b[0;32m      5\u001b[0m poly_lib \u001b[38;5;241m=\u001b[39m ps\u001b[38;5;241m.\u001b[39mPolynomialLibrary(degree\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m      6\u001b[0m lib_func \u001b[38;5;241m=\u001b[39m [\u001b[38;5;28;01mlambda\u001b[39;00m vx: \u001b[38;5;241m1\u001b[39m\u001b[38;5;241m/\u001b[39mvx,\n\u001b[1;32m----> 7\u001b[0m             \u001b[38;5;28;01mlambda\u001b[39;00m vx: \u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;241;43m/\u001b[39;49m\u001b[43mvx\u001b[49m\u001b[38;5;241;43m^\u001b[39;49m\u001b[38;5;241;43m2\u001b[39;49m]\n\u001b[0;32m      8\u001b[0m lib_func_names \u001b[38;5;241m=\u001b[39m [\u001b[38;5;28;01mlambda\u001b[39;00m vx: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m1/(vx= \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m+\u001b[39mvx\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m      9\u001b[0m                   \u001b[38;5;28;01mlambda\u001b[39;00m vx: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m1/(vx= \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m+\u001b[39mvx\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m)^2\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m     11\u001b[0m custom_lib \u001b[38;5;241m=\u001b[39m ps\u001b[38;5;241m.\u001b[39mCustomLibrary(library_functions\u001b[38;5;241m=\u001b[39mlib_func, \n\u001b[0;32m     12\u001b[0m                               function_names\u001b[38;5;241m=\u001b[39mlib_func_names)\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\numpy\\lib\\mixins.py:21\u001b[0m, in \u001b[0;36m_binary_method.<locals>.func\u001b[1;34m(self, other)\u001b[0m\n\u001b[0;32m     19\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _disables_array_ufunc(other):\n\u001b[0;32m     20\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mNotImplemented\u001b[39m\n\u001b[1;32m---> 21\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mufunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mother\u001b[49m\u001b[43m)\u001b[49m\n\nFile \u001b[1;32mc:\\Users\\sunan\\miniconda3\\lib\\site-packages\\pysindy\\utils\\axes.py:83\u001b[0m, in \u001b[0;36mAxesArray.__array_ufunc__\u001b[1;34m(self, ufunc, method, out, *inputs, **kwargs)\u001b[0m\n\u001b[0;32m     81\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m     82\u001b[0m     outputs \u001b[38;5;241m=\u001b[39m (\u001b[38;5;28;01mNone\u001b[39;00m,) \u001b[38;5;241m*\u001b[39m ufunc\u001b[38;5;241m.\u001b[39mnout\n\u001b[1;32m---> 83\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39m__array_ufunc__(ufunc, method, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m     84\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m results \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28mNotImplemented\u001b[39m:\n\u001b[0;32m     85\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mNotImplemented\u001b[39m\n\n\u001b[1;31mTypeError\u001b[0m: ufunc 'bitwise_xor' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''"
}

from pysindy.

Jacob-Stevens-Haas avatar Jacob-Stevens-Haas commented on July 19, 2024

This seems like an issue with AxesArray. FWIW, rather than uploading files, if they're long and distracting, you can put them in a spoiler dropdown. I hope you don't mind, I edited your comment to show you how. But it looks like the way you copied and saved the error lost line endings and messed up the encoding, so it's a little bit unreadable.

I tried running your code (adding

import numpy

x_train = np.arange(2* 251).reshape((251,2))
u_train = np.arange(2* 251).reshape((251,2))

) but I don't know what dp is (in model.fit(x_train, u=u_train, t = float(dp.Ts), quiet=True)), so I'm getting a NameError.

from pysindy.

SunandanAdhikary avatar SunandanAdhikary commented on July 19, 2024

Excuse me. I have hurriedly uploaded it in the wrong format. PFA the error here.
dp is an object that I created. You can use 0.04 as the sampling interval.

error
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[14], [line 37](vscode-notebook-cell:?execution_count=14&line=37)
     [31](vscode-notebook-cell:?execution_count=14&line=31) gen_lib = ps.GeneralizedLibrary([poly_lib, custom_lib],
     [32](vscode-notebook-cell:?execution_count=14&line=32)                                 tensor_array=tensoring_libs,
     [33](vscode-notebook-cell:?execution_count=14&line=33)                                 inputs_per_library=varuse_libwise)
     [35](vscode-notebook-cell:?execution_count=14&line=35) model = ps.SINDy(feature_names=states, optimizer=ensemble_opt, feature_library=gen_lib)
---> [37](vscode-notebook-cell:?execution_count=14&line=37) model.fit(x_train, u=u_train, t = float(dp.Ts), quiet=True)
     [39](vscode-notebook-cell:?execution_count=14&line=39) model.get_feature_names()
     [41](vscode-notebook-cell:?execution_count=14&line=41) model.print()

File [c:\Users\sunan\miniconda3\lib\site-packages\pysindy\pysindy.py:414](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/pysindy.py:414), in SINDy.fit(self, x, t, x_dot, u, multiple_trajectories, unbias, quiet, ensemble, library_ensemble, replace, n_candidates_to_drop, n_subset, n_models, ensemble_aggregator)
    [412](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/pysindy.py:412)     warnings.filterwarnings(action, category=LinAlgWarning)
    [413](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/pysindy.py:413)     warnings.filterwarnings(action, category=UserWarning)
--> [414](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/pysindy.py:414)     self.model.fit(x, x_dot)
    [416](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/pysindy.py:416) # New version of sklearn changes attribute name
    [417](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/pysindy.py:417) if float(__version__[:3]) >= 1.0:

File [c:\Users\sunan\miniconda3\lib\site-packages\sklearn\pipeline.py:402](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:402), in Pipeline.fit(self, X, y, **fit_params)
    [376](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:376) """Fit the model.
    [377](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:377) 
    [378](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:378) Fit all the transformers one after the other and transform the
   (...)
    [399](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:399)     Pipeline with fitted steps.
    [400](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:400) """
    [401](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:401) fit_params_steps = self._check_fit_params(**fit_params)
--> [402](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:402) Xt = self._fit(X, y, **fit_params_steps)
    [403](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:403) with _print_elapsed_time("Pipeline", self._log_message(len(self.steps) - 1)):
    [404](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:404)     if self._final_estimator != "passthrough":

File [c:\Users\sunan\miniconda3\lib\site-packages\sklearn\pipeline.py:360](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:360), in Pipeline._fit(self, X, y, **fit_params_steps)
    [358](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:358)     cloned_transformer = clone(transformer)
    [359](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:359) # Fit or load from cache the current transformer
--> [360](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:360) X, fitted_transformer = fit_transform_one_cached(
    [361](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:361)     cloned_transformer,
    [362](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:362)     X,
    [363](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:363)     y,
    [364](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:364)     None,
    [365](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:365)     message_clsname="Pipeline",
    [366](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:366)     message=self._log_message(step_idx),
    [367](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:367)     **fit_params_steps[name],
    [368](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:368) )
    [369](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:369) # Replace the transformer of the step with the fitted
    [370](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:370) # transformer. This is necessary when loading the transformer
    [371](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:371) # from the cache.
    [372](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:372) self.steps[step_idx] = (name, fitted_transformer)

File [c:\Users\sunan\miniconda3\lib\site-packages\joblib\memory.py:349](file:///C:/Users/sunan/miniconda3/lib/site-packages/joblib/memory.py:349), in NotMemorizedFunc.__call__(self, *args, **kwargs)
    [348](file:///C:/Users/sunan/miniconda3/lib/site-packages/joblib/memory.py:348) def __call__(self, *args, **kwargs):
--> [349](file:///C:/Users/sunan/miniconda3/lib/site-packages/joblib/memory.py:349)     return self.func(*args, **kwargs)

File [c:\Users\sunan\miniconda3\lib\site-packages\sklearn\pipeline.py:894](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:894), in _fit_transform_one(transformer, X, y, weight, message_clsname, message, **fit_params)
    [892](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:892) with _print_elapsed_time(message_clsname, message):
    [893](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:893)     if hasattr(transformer, "fit_transform"):
--> [894](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:894)         res = transformer.fit_transform(X, y, **fit_params)
    [895](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:895)     else:
    [896](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/pipeline.py:896)         res = transformer.fit(X, y, **fit_params).transform(X)

File [c:\Users\sunan\miniconda3\lib\site-packages\sklearn\utils\_set_output.py:142](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:142), in _wrap_method_output.<locals>.wrapped(self, X, *args, **kwargs)
    [140](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:140) @wraps(f)
    [141](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:141) def wrapped(self, X, *args, **kwargs):
--> [142](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:142)     data_to_wrap = f(self, X, *args, **kwargs)
    [143](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:143)     if isinstance(data_to_wrap, tuple):
    [144](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:144)         # only wrap the first output for cross decomposition
    [145](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:145)         return (
    [146](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:146)             _wrap_data_with_container(method, data_to_wrap[0], X, self),
    [147](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:147)             *data_to_wrap[1:],
    [148](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:148)         )

File [c:\Users\sunan\miniconda3\lib\site-packages\sklearn\utils\_set_output.py:142](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:142), in _wrap_method_output.<locals>.wrapped(self, X, *args, **kwargs)
    [140](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:140) @wraps(f)
    [141](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:141) def wrapped(self, X, *args, **kwargs):
--> [142](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:142)     data_to_wrap = f(self, X, *args, **kwargs)
    [143](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:143)     if isinstance(data_to_wrap, tuple):
    [144](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:144)         # only wrap the first output for cross decomposition
    [145](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:145)         return (
    [146](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:146)             _wrap_data_with_container(method, data_to_wrap[0], X, self),
    [147](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:147)             *data_to_wrap[1:],
    [148](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:148)         )

File [c:\Users\sunan\miniconda3\lib\site-packages\sklearn\utils\_set_output.py:142](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:142), in _wrap_method_output.<locals>.wrapped(self, X, *args, **kwargs)
    [140](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:140) @wraps(f)
    [141](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:141) def wrapped(self, X, *args, **kwargs):
--> [142](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:142)     data_to_wrap = f(self, X, *args, **kwargs)
    [143](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:143)     if isinstance(data_to_wrap, tuple):
    [144](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:144)         # only wrap the first output for cross decomposition
    [145](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:145)         return (
    [146](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:146)             _wrap_data_with_container(method, data_to_wrap[0], X, self),
    [147](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:147)             *data_to_wrap[1:],
    [148](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:148)         )

File [c:\Users\sunan\miniconda3\lib\site-packages\sklearn\base.py:851](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/base.py:851), in TransformerMixin.fit_transform(self, X, y, **fit_params)
    [848](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/base.py:848)     return self.fit(X, **fit_params).transform(X)
    [849](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/base.py:849) else:
    [850](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/base.py:850)     # fit method of arity 2 (supervised transformation)
--> [851](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/base.py:851)     return self.fit(X, y, **fit_params).transform(X)

File [c:\Users\sunan\miniconda3\lib\site-packages\sklearn\utils\_set_output.py:142](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:142), in _wrap_method_output.<locals>.wrapped(self, X, *args, **kwargs)
    [140](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:140) @wraps(f)
    [141](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:141) def wrapped(self, X, *args, **kwargs):
--> [142](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:142)     data_to_wrap = f(self, X, *args, **kwargs)
    [143](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:143)     if isinstance(data_to_wrap, tuple):
    [144](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:144)         # only wrap the first output for cross decomposition
    [145](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:145)         return (
    [146](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:146)             _wrap_data_with_container(method, data_to_wrap[0], X, self),
    [147](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:147)             *data_to_wrap[1:],
    [148](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:148)         )

File [c:\Users\sunan\miniconda3\lib\site-packages\pysindy\feature_library\base.py:191](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:191), in x_sequence_or_item.<locals>.func(self, x, *args, **kwargs)
    [189](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:189) if isinstance(x, Sequence):
    [190](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:190)     xs = [AxesArray(xi, comprehend_axes(xi)) for xi in x]
--> [191](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:191)     result = wrapped_func(self, xs, *args, **kwargs)
    [192](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:192)     if isinstance(result, Sequence):  # e.g. transform() returns x
    [193](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:193)         return [AxesArray(xp, comprehend_axes(xp)) for xp in result]

File [c:\Users\sunan\miniconda3\lib\site-packages\pysindy\feature_library\generalized_library.py:267](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/generalized_library.py:267), in GeneralizedLibrary.transform(self, x_full)
    [264](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/generalized_library.py:264) if i < self.inputs_per_library_.shape[0]:
    [265](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/generalized_library.py:265)     if i not in self.exclude_libs_:
    [266](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/generalized_library.py:266)         xps.append(
--> [267](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/generalized_library.py:267)             lib.transform(
    [268](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/generalized_library.py:268)                 [x[..., np.unique(self.inputs_per_library_[i, :])]]
    [269](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/generalized_library.py:269)             )[0]
    [270](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/generalized_library.py:270)         )
    [271](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/generalized_library.py:271) else:
    [272](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/generalized_library.py:272)     xps.append(lib.transform([x])[0])

File [c:\Users\sunan\miniconda3\lib\site-packages\sklearn\utils\_set_output.py:142](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:142), in _wrap_method_output.<locals>.wrapped(self, X, *args, **kwargs)
    [140](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:140) @wraps(f)
    [141](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:141) def wrapped(self, X, *args, **kwargs):
--> [142](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:142)     data_to_wrap = f(self, X, *args, **kwargs)
    [143](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:143)     if isinstance(data_to_wrap, tuple):
    [144](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:144)         # only wrap the first output for cross decomposition
    [145](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:145)         return (
    [146](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:146)             _wrap_data_with_container(method, data_to_wrap[0], X, self),
    [147](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:147)             *data_to_wrap[1:],
    [148](file:///C:/Users/sunan/miniconda3/lib/site-packages/sklearn/utils/_set_output.py:148)         )

File [c:\Users\sunan\miniconda3\lib\site-packages\pysindy\feature_library\base.py:191](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:191), in x_sequence_or_item.<locals>.func(self, x, *args, **kwargs)
    [189](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:189) if isinstance(x, Sequence):
    [190](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:190)     xs = [AxesArray(xi, comprehend_axes(xi)) for xi in x]
--> [191](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:191)     result = wrapped_func(self, xs, *args, **kwargs)
    [192](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:192)     if isinstance(result, Sequence):  # e.g. transform() returns x
    [193](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/base.py:193)         return [AxesArray(xp, comprehend_axes(xp)) for xp in result]

File [c:\Users\sunan\miniconda3\lib\site-packages\pysindy\feature_library\custom_library.py:230](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/custom_library.py:230), in CustomLibrary.transform(self, x_full)
    [226](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/custom_library.py:226) for f in self.functions:
    [227](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/custom_library.py:227)     for c in self._combinations(
    [228](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/custom_library.py:228)         n_input_features, f.__code__.co_argcount, self.interaction_only
    [229](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/custom_library.py:229)     ):
--> [230](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/custom_library.py:230)         xp[..., library_idx] = f(*[x[..., j] for j in c])
    [231](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/custom_library.py:231)         library_idx += 1
    [233](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/feature_library/custom_library.py:233) xp = AxesArray(xp, comprehend_axes(xp))

Cell In[14], [line 8](vscode-notebook-cell:?execution_count=14&line=8)
      [5](vscode-notebook-cell:?execution_count=14&line=5) # identity_lib = ps.IdentityLibrary()
      [6](vscode-notebook-cell:?execution_count=14&line=6) poly_lib = ps.PolynomialLibrary(degree=1)
      [7](vscode-notebook-cell:?execution_count=14&line=7) lib_func = [lambda vx: 1/vx,
----> [8](vscode-notebook-cell:?execution_count=14&line=8)             lambda vx: 1/vx^2]
      [9](vscode-notebook-cell:?execution_count=14&line=9) lib_func_names = [lambda vx: '1/(vx= '+vx+')',
     [10](vscode-notebook-cell:?execution_count=14&line=10)                   lambda vx: '1/(vx= '+vx+')^2']
     [12](vscode-notebook-cell:?execution_count=14&line=12) custom_lib = ps.CustomLibrary(library_functions=lib_func, 
     [13](vscode-notebook-cell:?execution_count=14&line=13)                               function_names=lib_func_names)

File [c:\Users\sunan\miniconda3\lib\site-packages\numpy\lib\mixins.py:21](file:///C:/Users/sunan/miniconda3/lib/site-packages/numpy/lib/mixins.py:21), in _binary_method.<locals>.func(self, other)
     [19](file:///C:/Users/sunan/miniconda3/lib/site-packages/numpy/lib/mixins.py:19) if _disables_array_ufunc(other):
     [20](file:///C:/Users/sunan/miniconda3/lib/site-packages/numpy/lib/mixins.py:20)     return NotImplemented
---> [21](file:///C:/Users/sunan/miniconda3/lib/site-packages/numpy/lib/mixins.py:21) return ufunc(self, other)

File [c:\Users\sunan\miniconda3\lib\site-packages\pysindy\utils\axes.py:83](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/utils/axes.py:83), in AxesArray.__array_ufunc__(self, ufunc, method, out, *inputs, **kwargs)
     [81](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/utils/axes.py:81) else:
     [82](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/utils/axes.py:82)     outputs = (None,) * ufunc.nout
---> [83](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/utils/axes.py:83) results = super().__array_ufunc__(ufunc, method, *args, **kwargs)
     [84](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/utils/axes.py:84) if results is NotImplemented:
     [85](file:///C:/Users/sunan/miniconda3/lib/site-packages/pysindy/utils/axes.py:85)     return NotImplemented

TypeError: ufunc 'bitwise_xor' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

<\details>

from pysindy.

SunandanAdhikary avatar SunandanAdhikary commented on July 19, 2024

@Jacob-Stevens-Haas Is this an error from my end, or is there an issue with the library?

from pysindy.

Jacob-Stevens-Haas avatar Jacob-Stevens-Haas commented on July 19, 2024

When you typed

lib_func = [lambda vx: 1/vx,
            lambda vx: 1/vx^2]

Did you mean to do bitwise XOR (^) or exponentiation (**)? Bitwise XOR isn't supported for floats.

I'm going to assume exponentiation, but there's still another error. The SINDy object needs feature names for both the state variables and control variables. Thus,

model = ps.SINDy(feature_names=states, ...

should be:

model = ps.SINDy(feature_names=states + inputs, ...)

Correcting this and the exponentiation gives:

(beta)' = -0.335 1 + 0.209 beta + -0.536 r + 0.620 delta
(r)' = 0.105 1 + 0.539 beta + -0.280 delta

from pysindy.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.