einsteinpy: einsteinpy.symbolic.tensor.tensor_product is not available in Google Colab (einsteinpy version 0.3.1)

🐞 Problem

I am trying to use the tensor_product function from the API doc here: https://docs.einsteinpy.org/en/stable/api/symbolic/tensor.html

I am using Google Colab, where I have installed einsteinpy==0.3.1

upon calling from einsteinpy.symbolic.tensor import tensor_product, I get the error:

ImportError: cannot import name 'tensor_product'

The name tensorproduct does exist, but does not have the functionality I need.

A link to my colab notebook is here: https://colab.research.google.com/drive/1fctmN_MGExFy24fqB7q2IIVl9IRnCRdP?usp=sharing

🖥 Please paste the output of following commands

  • pip freeze

Paste your output here:

absl-py==0.10.0 alabaster==0.7.12 albumentations==0.1.12 altair==4.1.0 appdirs==1.4.4 argon2-cffi==20.1.0 asgiref==3.3.1 astor==0.8.1 astropy==4.1 astunparse==1.6.3 async-generator==1.10 atari-py==0.2.6 atomicwrites==1.4.0 attrs==20.3.0 audioread==2.1.9 autograd==1.3 Babel==2.9.0 backcall==0.2.0 beautifulsoup4==4.6.3 bleach==3.3.0 blis==0.4.1 bokeh==2.1.1 Bottleneck==1.3.2 branca==0.4.2 bs4==0.0.1 CacheControl==0.12.6 cachetools==4.2.1 catalogue==1.0.0 certifi==2020.12.5 cffi==1.14.4 chainer==7.4.0 chardet==3.0.4 click==7.1.2 cloudpickle==1.3.0 cmake==3.12.0 cmdstanpy==0.9.5 colorlover==0.3.0 community==1.0.0b1 contextlib2==0.5.5 convertdate==2.3.0 coverage==3.7.1 coveralls==0.5 crcmod==1.7 cufflinks==0.17.3 cvxopt==1.2.5 cvxpy==1.0.31 cycler==0.10.0 cymem==2.0.5 Cython==0.29.21 daft==0.0.4 dask==2.12.0 dataclasses==0.8 datascience==0.10.6 debugpy==1.0.0 decorator==4.4.2 defusedxml==0.6.0 descartes==1.1.0 dill==0.3.3 distributed==1.25.3 Django==3.1.6 dlib==19.18.0 dm-tree==0.1.5 docopt==0.6.2 docutils==0.16 dopamine-rl==1.0.5 earthengine-api==0.1.238 easydict==1.9 ecos==2.0.7.post1 editdistance==0.5.3 einsteinpy==0.3.1 en-core-web-sm==2.2.5 entrypoints==0.3 ephem==3.7.7.1 et-xmlfile==1.0.1 fa2==0.3.5 fancyimpute==0.4.3 fastai==1.0.61 fastdtw==0.3.4 fastprogress==1.0.0 fastrlock==0.5 fbprophet==0.7.1 feather-format==0.4.1 filelock==3.0.12 firebase-admin==4.4.0 fix-yahoo-finance==0.0.22 Flask==1.1.2 flatbuffers==1.12 folium==0.8.3 future==0.16.0 gast==0.3.3 GDAL==2.2.2 gdown==3.6.4 gensim==3.6.0 geographiclib==1.50 geopy==1.17.0 gin-config==0.4.0 glob2==0.7 google==2.0.3 google-api-core==1.16.0 google-api-python-client==1.7.12 google-auth==1.25.0 google-auth-httplib2==0.0.4 google-auth-oauthlib==0.4.2 google-cloud-bigquery==1.21.0 google-cloud-bigquery-storage==1.1.0 google-cloud-core==1.0.3 google-cloud-datastore==1.8.0 google-cloud-firestore==1.7.0 google-cloud-language==1.2.0 google-cloud-storage==1.18.1 google-cloud-translate==1.5.0 google-colab==1.0.0 google-pasta==0.2.0 google-resumable-media==0.4.1 googleapis-common-protos==1.52.0 googledrivedownloader==0.4 graphviz==0.10.1 grpcio==1.32.0 gspread==3.0.1 gspread-dataframe==3.0.8 gym==0.17.3 h5py==2.10.0 HeapDict==1.0.1 hijri-converter==2.1.1 holidays==0.10.5.2 holoviews==1.13.5 html5lib==1.0.1 httpimport==0.5.18 httplib2==0.17.4 httplib2shim==0.0.3 humanize==0.5.1 hyperopt==0.1.2 ideep4py==2.0.0.post3 idna==2.10 image==1.5.33 imageio==2.4.1 imagesize==1.2.0 imbalanced-learn==0.4.3 imblearn==0.0 imgaug==0.2.9 importlib-metadata==3.4.0 importlib-resources==5.1.0 imutils==0.5.4 inflect==2.1.0 iniconfig==1.1.1 intel-openmp==2021.1.2 intervaltree==2.1.0 ipykernel==4.10.1 ipython==5.5.0 ipython-genutils==0.2.0 ipython-sql==0.3.9 ipywidgets==7.6.3 itsdangerous==1.1.0 jax==0.2.9 jaxlib==0.1.60+cuda101 jdcal==1.4.1 jedi==0.18.0 jieba==0.42.1 Jinja2==2.11.3 joblib==1.0.0 jpeg4py==0.1.4 jsonschema==2.6.0 jupyter==1.0.0 jupyter-client==5.3.5 jupyter-console==5.2.0 jupyter-core==4.7.1 jupyterlab-pygments==0.1.2 jupyterlab-widgets==1.0.0 kaggle==1.5.10 kapre==0.1.3.1 Keras==2.4.3 Keras-Preprocessing==1.1.2 keras-vis==0.4.1 kiwisolver==1.3.1 knnimpute==0.1.0 korean-lunar-calendar==0.2.1 librosa==0.8.0 lightgbm==2.2.3 llvmlite==0.34.0 lmdb==0.99 lucid==0.3.8 LunarCalendar==0.0.9 lxml==4.2.6 Markdown==3.3.3 MarkupSafe==1.1.1 matplotlib==3.2.2 matplotlib-venn==0.11.6 missingno==0.4.2 mistune==0.8.4 mizani==0.6.0 mkl==2019.0 mlxtend==0.14.0 more-itertools==8.6.0 moviepy==0.2.3.5 mpmath==1.1.0 msgpack==1.0.2 multiprocess==0.70.11.1 multitasking==0.0.9 murmurhash==1.0.5 music21==5.5.0 natsort==5.5.0 nbclient==0.5.1 nbconvert==5.6.1 nbformat==5.1.2 nest-asyncio==1.5.1 networkx==2.5 nibabel==3.0.2 nltk==3.2.5 notebook==5.3.1 np-utils==0.5.12.1 numba==0.51.2 numexpr==2.7.2 numpy==1.19.5 nvidia-ml-py3==7.352.0 oauth2client==4.1.3 oauthlib==3.1.0 okgrade==0.4.3 opencv-contrib-python==4.1.2.30 opencv-python==4.1.2.30 openpyxl==2.5.9 opt-einsum==3.3.0 osqp==0.6.2.post0 packaging==20.9 palettable==3.3.0 pandas==1.1.5 pandas-datareader==0.9.0 pandas-gbq==0.13.3 pandas-profiling==1.4.1 pandocfilters==1.4.3 panel==0.9.7 param==1.10.1 parso==0.8.1 pathlib==1.0.1 patsy==0.5.1 pexpect==4.8.0 pickleshare==0.7.5 Pillow==7.0.0 pip-tools==4.5.1 plac==1.1.3 plotly==4.4.1 plotnine==0.6.0 pluggy==0.7.1 pooch==1.3.0 portpicker==1.3.1 prefetch-generator==1.0.1 preshed==3.0.5 prettytable==2.0.0 progressbar2==3.38.0 prometheus-client==0.9.0 promise==2.3 prompt-toolkit==1.0.18 protobuf==3.12.4 psutil==5.4.8 psycopg2==2.7.6.1 ptyprocess==0.7.0 py==1.10.0 pyarrow==0.14.1 pyasn1==0.4.8 pyasn1-modules==0.2.8 pycocotools==2.0.2 pycparser==2.20 pyct==0.4.8 pydata-google-auth==1.1.0 pydot==1.3.0 pydot-ng==2.0.0 pydotplus==2.0.2 PyDrive==1.3.1 pyemd==0.5.1 pyglet==1.5.0 Pygments==2.6.1 pygobject==3.26.1 pymc3==3.7 PyMeeus==0.3.7 pymongo==3.11.3 pymystem3==0.2.0 pynndescent==0.5.1 PyOpenGL==3.1.5 pyparsing==2.4.7 pyrsistent==0.17.3 pysndfile==1.3.8 PySocks==1.7.1 pystan==2.19.1.1 pytest==3.6.4 python-apt==1.6.5+ubuntu0.5 python-chess==0.23.11 python-dateutil==2.8.1 python-louvain==0.15 python-slugify==4.0.1 python-utils==2.5.6 pytz==2018.9 pyviz-comms==2.0.1 PyWavelets==1.1.1 PyYAML==3.13 pyzmq==22.0.2 qdldl==0.1.5.post0 qtconsole==5.0.2 QtPy==1.9.0 regex==2019.12.20 requests==2.23.0 requests-oauthlib==1.3.0 resampy==0.2.2 retrying==1.3.3 rpy2==3.2.7 rsa==4.7 scikit-image==0.16.2 scikit-learn==0.22.2.post1 scipy==1.4.1 screen-resolution-extra==0.0.0 scs==2.1.2 seaborn==0.11.1 Send2Trash==1.5.0 setuptools-git==1.2 Shapely==1.7.1 simplegeneric==0.8.1 six==1.15.0 sklearn==0.0 sklearn-pandas==1.8.0 smart-open==4.1.2 snowballstemmer==2.1.0 sortedcontainers==2.3.0 SoundFile==0.10.3.post1 spacy==2.2.4 Sphinx==1.8.5 sphinxcontrib-serializinghtml==1.1.4 sphinxcontrib-websupport==1.2.4 SQLAlchemy==1.3.23 sqlparse==0.4.1 srsly==1.0.5 statsmodels==0.10.2 sympy==1.1.1 tables==3.4.4 tabulate==0.8.7 tblib==1.7.0 tensorboard==2.4.1 tensorboard-plugin-wit==1.8.0 tensorboardcolab==0.0.22 tensorflow==2.4.1 tensorflow-addons==0.8.3 tensorflow-datasets==4.0.1 tensorflow-estimator==2.4.0 tensorflow-gcs-config==2.4.0 tensorflow-hub==0.11.0 tensorflow-metadata==0.27.0 tensorflow-privacy==0.2.2 tensorflow-probability==0.12.1 termcolor==1.1.0 terminado==0.9.2 testpath==0.4.4 text-unidecode==1.3 textblob==0.15.3 textgenrnn==1.4.1 Theano==1.0.5 thinc==7.4.0 tifffile==2020.9.3 toml==0.10.2 toolz==0.11.1 torch==1.7.0+cu101 torchsummary==1.5.1 torchtext==0.3.1 torchvision==0.8.1+cu101 tornado==5.1.1 tqdm==4.41.1 traitlets==4.3.3 tweepy==3.6.0 typeguard==2.7.1 typing-extensions==3.7.4.3 tzlocal==1.5.1 umap-learn==0.5.0 uritemplate==3.0.1 urllib3==1.24.3 vega-datasets==0.9.0 wasabi==0.8.2 wcwidth==0.2.5 webencodings==0.5.1 Werkzeug==1.0.1 widgetsnbextension==3.5.1 wordcloud==1.5.0 wrapt==1.12.1 xarray==0.15.1 xgboost==0.90 xkit==0.0.0 xlrd==1.1.0 xlwt==1.3.0 yellowbrick==0.9.1 zict==2.0.0 zipp==3.4.0

  • python -c "import einsteinpy.testing; einsteinpy.testing.test()"

Paste your output here:

============================= test session starts ============================== platform linux – Python 3.6.9, pytest-3.6.4, py-1.10.0, pluggy-0.7.1 rootdir: /usr/local, inifile: setup.cfg plugins: typeguard-2.7.1 collected 239 items

…/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_bodies.py . [ 0%] … [ 10%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_constant.py . [ 10%] … [ 11%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_examples.py . [ 12%] . [ 12%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_geodesics.py . [ 12%] … [ 14%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_coordinates/test_conversions.py . [ 14%] … [ 17%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_coordinates/test_coord_transform.py . [ 17%] … [ 24%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_coordinates/test_velocity_transform.py . [ 24%] … [ 28%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_hypersurface/test_schwarzschildembedding.py . [ 29%] … [ 30%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_ijit/test_ijit_without_numba.py . [ 30%] [ 30%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_integrators/test_runge_kutta.py . [ 31%] [ 31%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_metric/test_kerr.py . [ 31%] … [ 34%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_metric/test_kerrnewman.py . [ 34%] … [ 36%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_metric/test_schwarzschild.py . [ 36%] … [ 40%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_plotting/test_fractal.py . [ 40%] . [ 41%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_plotting/test_hypersurface.py . [ 41%] . [ 41%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_plotting/test_geodesics/test_interactive.py . [ 42%] … [ 43%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_plotting/test_geodesics/test_static.py . [ 44%] … [ 47%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_plotting/test_rays/test_shadow.py . [ 47%] . [ 48%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_christoffel.py . [ 48%] … [ 50%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_constants.py . [ 51%] . [ 51%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_einstein.py . [ 51%] … [ 53%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_helpers.py . [ 53%] x… [ 57%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_metric.py . [ 57%] … [ 60%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_ricci.py . [ 60%] … [ 63%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_riemann.py . [ 63%] … [ 64%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_schouten.py . [ 65%] … [ 66%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_stress_energy_momentum.py . [ 66%] … [ 67%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_tensor.py . [ 68%] …xxxxx…xF… [ 76%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_vector.py . [ 77%] x… [ 78%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_weyl.py . [ 79%] … [ 81%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_predefined/test_all.py . [ 81%] … [ 91%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_predefined/test_find.py . [ 91%] . [ 92%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_utils/test_kerr_utils.py . [ 92%] … [ 95%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_utils/test_kerrnewman_utils.py . [ 95%] … [ 99%] …/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_utils/test_schwarzschild_utils.py . [100%]

=================================== FAILURES =================================== ______ test_BaseRelativityTensor_automatic_calculation_of_free_variables _______

def test_BaseRelativityTensor_automatic_calculation_of_free_variables():
  t1, variables, functions = arbitrary_tensor1()

/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_tensor.py:201:


/usr/local/lib/python3.6/dist-packages/einsteinpy/tests/test_symbolic/test_tensor.py:78: in arbitrary_tensor1 return BaseRelativityTensor(list2d, syms, config=“ll”), [a, c], [f1, f2, f3] /usr/local/lib/python3.6/dist-packages/einsteinpy/symbolic/tensor.py:301: in init v for v in self.arr.free_symbols if v not in self.syms /usr/local/lib/python3.6/dist-packages/sympy/core/basic.py:501: in free_symbols return set().union([a.free_symbols for a in self.args]) /usr/local/lib/python3.6/dist-packages/sympy/core/basic.py:501: in <listcomp> return set().union([a.free_symbols for a in self.args])


self = (-af1(a, x2)/x1 + 1, 0, 0, 5f2©, 0, -1/(c2*(-a/x1 + 1)), f3, 0, 0, f3, -x12/c2, 0, 5*f2©, 0, 0, -x12*sin(x2)2/c2)

@property
def free_symbols(self):
    """Return from the atoms of self those which are free symbols.

        For most expressions, all symbols are free symbols. For some classes
        this is not true. e.g. Integrals use Symbols for the dummy variables
        which are bound variables, so Integral has a method to return all
        symbols except those. Derivative keeps track of symbols with respect
        to which it will perform a derivative; those are
        bound variables, too, so it has its own free_symbols method.

        Any other method that uses bound variables should implement a
        free_symbols method."""
  return set().union(*[a.free_symbols for a in self.args])

E TypeError: ‘property’ object is not iterable

/usr/local/lib/python3.6/dist-packages/sympy/core/basic.py:501: TypeError =============================== warnings summary =============================== lib/python3.6/dist-packages/einsteinpy/tests/test_bodies.py::test_predefined_bodies_base_properties[obj0-parent0-R0-mass0] /usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning:

pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.

lib/python3.6/dist-packages/einsteinpy/tests/test_plotting/test_hypersurface.py::test_plot_calls_plt_show /usr/local/lib/python3.6/dist-packages/numpy/core/_asarray.py:136: VisibleDeprecationWarning:

Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify ‘dtype=object’ when creating the ndarray

– Docs: http://doc.pytest.org/en/latest/warnings.html ======== 1 failed, 230 passed, 8 xfailed, 2 warnings in 205.76 seconds =========

🎯 Goal

I have multiple tensors that I want to multiply and contract with each other, and the tensor_product function is very convenient to that end.

💡 Possible solutions

This seems like an easy fix; the function is already written in the github repo.

I think I can also use a combination of tensorproduct and tensorcontraction (and will try to do so in the meanwhile), but I’d like to be able to use the tensor_product function if possible.

📋 Steps to solve the problem

This is an install problem, so there is nothing I can do.

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 15 (12 by maintainers)

Most upvoted comments

Sad news, hoping things get better soon for you.

Will be releasing a new version this week and most likely today itself. Sorry for the delay. The covid situation here is pretty bad 😕 _______________________________________ This email is sent from a smartphone. Please ignore grammatical mistakes and typographical errors.


On Wed, 5 May, 2021, 9:33 am Wenyin Wei, @.***> wrote: Hi, I have met the same issue with python v3.7.5, with einsteinpy v0.3.1 installed today via pip. The tensor_product function is still missing indeed (05/05/2021). Shall we update the v0.3.1 pip tarball or upload a new one with the latest einsteinpy version? Or just modify the v0.3.1 doc? The difference between doc and code indeed makes users lost and confused. einsteinpy’s tensor functionality is much better than sympy, and easier to understand. Thank you for such a brilliant masterpiece. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#574 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFZCK6SNRSSPIWFORCPSLTTTMC7P7ANCNFSM4XJ7OKCA .

I just wanted to say thank you so much for creating and maintaining this project. It really brings power to ordinary programmers to study and use tensors in curved spaces.

I have written my own function to multiply and contract tensors, so this is not an issue for me anymore. If you’d like, I can keep the issue open for the time being.