abhinavnatarajan / Chalc

Persistent homology of chromatic alpha complexes
https://abhinavnatarajan.github.io/Chalc/
GNU General Public License v3.0
4 stars 0 forks source link

Chalc 3.1.1 fails to install on mac #1

Open OnDraganov opened 1 month ago

OnDraganov commented 1 month ago

pip install chalc, version 3.1.1 fails when building wheel on mac for me. I include log file with the error. It ends with CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage. I used python 3.10 on macOS Sonoma 14.5 with Intel processor. The error also occurs in a fresh virtual environment.

abhinavnatarajan commented 1 month ago

It seems like you're using a Mac with an Intel chip, not the Apple M-series chips. There isn't a binary build of chalc available for this platform. While I get around to fixing that, could you try the following: run brew install automake autoconf libtool before trying to install chalc again?

Edit: I've pushed v3.1.2 with binaries for x86_64 on MacOS, so try using that instead. The phimaker dependency has also been updated to 0.1.3 to fix the issue you had with the phimaker dependency.

OnDraganov commented 1 month ago

I don't know which fix did the it, but I ran the automake installation and then installed chalc via pip and it was successful.

There is now a problem when importing due to numpy >=2.0.0 shenanigans--I will try with pre-2.0.0 numpy, and let you know.

abhinavnatarajan commented 1 month ago

Could you post the error message here? chalc >= 2.0.0 will not work with pre-2.0.0 numpy due to ABI compatibility issues.

OnDraganov commented 1 month ago

Sure, I copy it below. Despite the warning it imports, but it might crash when used I guess.

A module that was compiled using NumPy 1.x cannot be run in
NumPy 2.0.1 as it may crash. To support both 1.x and 2.x
versions of NumPy, modules must be compiled with NumPy 2.0.
Some module may need to rebuild instead e.g. with 'pybind11>=2.12'.

If you are a user of the module, the easiest solution will be to
downgrade to 'numpy<2' or try to upgrade the affected module.
We expect that some modules will need time to support NumPy 2.

Traceback (most recent call last):  File "/usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.10/site-packages/ipykernel/__main__.py", line 4, in <module>
    app.launch_new_instance()
  File "/usr/local/lib/python3.10/site-packages/traitlets/config/application.py", line 978, in launch_instance
    app.start()
  File "/usr/local/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 712, in start
    self.io_loop.start()
  File "/usr/local/lib/python3.10/site-packages/tornado/platform/asyncio.py", line 215, in start
    self.asyncio_loop.run_forever()
  File "/usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py", line 603, in run_forever
    self._run_once()
  File "/usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py", line 1909, in _run_once
    handle._run()
  File "/usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/local/lib/python3.10/site-packages/ipykernel/kernelbase.py", line 510, in dispatch_queue
    await self.process_one()
  File "/usr/local/lib/python3.10/site-packages/ipykernel/kernelbase.py", line 499, in process_one
    await dispatch(*args)
  File "/usr/local/lib/python3.10/site-packages/ipykernel/kernelbase.py", line 406, in dispatch_shell
    await result
  File "/usr/local/lib/python3.10/site-packages/ipykernel/kernelbase.py", line 730, in execute_request
    reply_content = await reply_content
  File "/usr/local/lib/python3.10/site-packages/ipykernel/ipkernel.py", line 383, in do_execute
    res = shell.run_cell(
  File "/usr/local/lib/python3.10/site-packages/ipykernel/zmqshell.py", line 528, in run_cell
    return super().run_cell(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 2885, in run_cell
    result = self._run_cell(
  File "/usr/local/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 2940, in _run_cell
    return runner(coro)
  File "/usr/local/lib/python3.10/site-packages/IPython/core/async_helpers.py", line 129, in _pseudo_sync_runner
    coro.send(None)
  File "/usr/local/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3139, in run_cell_async
    has_raised = await self.run_ast_nodes(code_ast.body, cell_name,
  File "/usr/local/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3318, in run_ast_nodes
    if await self.run_code(code, result, async_=asy):
  File "/usr/local/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3378, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "/var/folders/nj/7fxzyf4x4859skpz67mhqf4h0000gn/T/ipykernel_74474/2291322110.py", line 1, in <module>
    import chalc
  File "/usr/local/lib/python3.10/site-packages/chalc/__init__.py", line 20, in <module>
    from . import plotting
  File "/usr/local/lib/python3.10/site-packages/chalc/plotting.py", line 10, in <module>
    import seaborn as sns
  File "/usr/local/lib/python3.10/site-packages/seaborn/__init__.py", line 2, in <module>
    from .rcmod import *  # noqa: F401,F403
  File "/usr/local/lib/python3.10/site-packages/seaborn/rcmod.py", line 5, in <module>
    from . import palettes
  File "/usr/local/lib/python3.10/site-packages/seaborn/palettes.py", line 9, in <module>
    from .utils import desaturate, get_color_cycle
  File "/usr/local/lib/python3.10/site-packages/seaborn/utils.py", line 11, in <module>
    import pandas as pd
  File "/usr/local/lib/python3.10/site-packages/pandas/__init__.py", line 26, in <module>
    from pandas.compat import (
  File "/usr/local/lib/python3.10/site-packages/pandas/compat/__init__.py", line 27, in <module>
    from pandas.compat.pyarrow import (
  File "/usr/local/lib/python3.10/site-packages/pandas/compat/pyarrow.py", line 8, in <module>
    import pyarrow as pa
  File "/usr/local/lib/python3.10/site-packages/pyarrow/__init__.py", line 65, in <module>
    import pyarrow.lib as _lib

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
AttributeError: _ARRAY_API not found

A module that was compiled using NumPy 1.x cannot be run in
NumPy 2.0.1 as it may crash. To support both 1.x and 2.x
versions of NumPy, modules must be compiled with NumPy 2.0.
Some module may need to rebuild instead e.g. with 'pybind11>=2.12'.

If you are a user of the module, the easiest solution will be to
downgrade to 'numpy<2' or try to upgrade the affected module.
We expect that some modules will need time to support NumPy 2.

Traceback (most recent call last):  File "/usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.10/site-packages/ipykernel/__main__.py", line 4, in <module>
    app.launch_new_instance()
  File "/usr/local/lib/python3.10/site-packages/traitlets/config/application.py", line 978, in launch_instance
    app.start()
  File "/usr/local/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 712, in start
    self.io_loop.start()
  File "/usr/local/lib/python3.10/site-packages/tornado/platform/asyncio.py", line 215, in start
    self.asyncio_loop.run_forever()
  File "/usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py", line 603, in run_forever
    self._run_once()
  File "/usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py", line 1909, in _run_once
    handle._run()
  File "/usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/local/lib/python3.10/site-packages/ipykernel/kernelbase.py", line 510, in dispatch_queue
    await self.process_one()
  File "/usr/local/lib/python3.10/site-packages/ipykernel/kernelbase.py", line 499, in process_one
    await dispatch(*args)
  File "/usr/local/lib/python3.10/site-packages/ipykernel/kernelbase.py", line 406, in dispatch_shell
    await result
  File "/usr/local/lib/python3.10/site-packages/ipykernel/kernelbase.py", line 730, in execute_request
    reply_content = await reply_content
  File "/usr/local/lib/python3.10/site-packages/ipykernel/ipkernel.py", line 383, in do_execute
    res = shell.run_cell(
  File "/usr/local/lib/python3.10/site-packages/ipykernel/zmqshell.py", line 528, in run_cell
    return super().run_cell(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 2885, in run_cell
    result = self._run_cell(
  File "/usr/local/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 2940, in _run_cell
    return runner(coro)
  File "/usr/local/lib/python3.10/site-packages/IPython/core/async_helpers.py", line 129, in _pseudo_sync_runner
    coro.send(None)
  File "/usr/local/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3139, in run_cell_async
    has_raised = await self.run_ast_nodes(code_ast.body, cell_name,
  File "/usr/local/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3318, in run_ast_nodes
    if await self.run_code(code, result, async_=asy):
  File "/usr/local/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3378, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "/var/folders/nj/7fxzyf4x4859skpz67mhqf4h0000gn/T/ipykernel_74474/2291322110.py", line 1, in <module>
    import chalc
  File "/usr/local/lib/python3.10/site-packages/chalc/__init__.py", line 20, in <module>
    from . import plotting
  File "/usr/local/lib/python3.10/site-packages/chalc/plotting.py", line 10, in <module>
    import seaborn as sns
  File "/usr/local/lib/python3.10/site-packages/seaborn/__init__.py", line 2, in <module>
    from .rcmod import *  # noqa: F401,F403
  File "/usr/local/lib/python3.10/site-packages/seaborn/rcmod.py", line 5, in <module>
    from . import palettes
  File "/usr/local/lib/python3.10/site-packages/seaborn/palettes.py", line 9, in <module>
    from .utils import desaturate, get_color_cycle
  File "/usr/local/lib/python3.10/site-packages/seaborn/utils.py", line 11, in <module>
    import pandas as pd
  File "/usr/local/lib/python3.10/site-packages/pandas/__init__.py", line 49, in <module>
    from pandas.core.api import (
  File "/usr/local/lib/python3.10/site-packages/pandas/core/api.py", line 9, in <module>
    from pandas.core.dtypes.dtypes import (
  File "/usr/local/lib/python3.10/site-packages/pandas/core/dtypes/dtypes.py", line 24, in <module>
    from pandas._libs import (
  File "/usr/local/lib/python3.10/site-packages/pyarrow/__init__.py", line 65, in <module>
    import pyarrow.lib as _lib

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
AttributeError: _ARRAY_API not found
abhinavnatarajan commented 4 weeks ago

@OnDraganov should be fixed in v3.1.3, the issue was an incompatible version of pandas.

OnDraganov commented 4 weeks ago

Unfortunately, I am still getting the error on import. Currently chalc version 3.1.3 and pandas version 2.2.2

abhinavnatarajan commented 4 weeks ago

Could you post the new error log?

OnDraganov commented 3 weeks ago

Sorry for a delay—it is the same exact error, that is why I did not post it again.

abhinavnatarajan commented 3 weeks ago

Would you mind posting the result of 'pip list' here? I suspect that there is some numpy 2 incompatible package polluting the dependency chain.

OnDraganov commented 3 weeks ago

Ah, that might very well be. I will try a fresh venv, only install chalc, and try.

My pip list is as follows:

Package                       Version
----------------------------- -----------
alabaster                     0.7.13
anndata                       0.8.0
appnope                       0.1.3
ase                           3.23.0
asttokens                     2.0.8
attrs                         22.1.0
Babel                         2.13.1
backcall                      0.2.0
beautifulsoup4                4.11.1
biopython                     1.81
bleach                        5.0.1
build                         1.2.1
CacheControl                  0.14.0
certifi                       2022.9.24
cffi                          1.17.0
chalc                         3.1.3
charset-normalizer            2.1.1
chromatic_tda                 1.1.3
cleo                          2.1.0
click                         8.1.3
click-default-group           1.2.2
cloup                         0.13.1
colour                        0.1.5
commonmark                    0.9.1
contourpy                     1.0.5
cramjam                       2.6.2
crashtest                     0.4.1
customtkinter                 5.0.1
cycler                        0.11.0
Cython                        0.29.32
darkdetect                    0.7.1
debugpy                       1.6.3
decorator                     5.1.1
defusedxml                    0.7.1
Deprecated                    1.2.13
distlib                       0.3.8
docutils                      0.20.1
dulwich                       0.21.7
entrypoints                   0.4
et-xmlfile                    1.1.0
ete3                          3.1.3
exceptiongroup                1.1.2
executing                     1.1.0
fanstatic                     1.3
fastjsonschema                2.20.0
fastparquet                   2023.4.0
filelock                      3.15.4
fonttools                     4.37.3
fsspec                        2023.4.0
future                        0.18.2
giotto-ph                     0.2.2
glcontext                     2.3.7
gudhi                         3.10.0
h5py                          3.11.0
hopcroftkarp                  1.2.5
hupper                        1.12.1
idna                          3.4
igraph                        0.10.4
imagesize                     1.4.1
importlib-metadata            6.8.0
iniconfig                     2.0.0
installer                     0.7.0
ipykernel                     6.16.0
ipython                       8.5.0
isosurfaces                   0.1.0
jaraco.classes                3.3.0
jedi                          0.18.1
Jinja2                        3.1.2
joblib                        1.2.0
js                            1.0
jsonschema                    4.16.0
jupyter_client                7.3.5
jupyter-core                  4.11.1
jupyterlab-pygments           0.2.2
keyring                       24.2.0
kiwisolver                    1.4.4
kmapper                       2.0.1
lazy_loader                   0.1rc2
legacy-api-wrap               1.4
leidenalg                     0.9.1
Levenshtein                   0.21.1
littleutils                   0.2.2
llvmlite                      0.43.0
lxml                          4.9.3
ManimPango                    0.4.3
mapbox-earcut                 1.0.1
MarkupSafe                    2.1.1
matplotlib                    3.8.4
matplotlib-inline             0.1.6
miniball                      1.2.0
mistune                       2.0.4
moderngl                      5.7.3
moderngl-window               2.4.2
more-itertools                10.0.0
msgpack                       1.0.8
multipledispatch              0.6.0
mypy                          1.5.0
mypy-extensions               1.0.0
natsort                       8.2.0
nbclient                      0.7.0
nbconvert                     7.2.1
nbformat                      5.7.0
nbscript                      0.1.0
nest-asyncio                  1.5.5
networkx                      3.0
numba                         0.60.0
numpy                         2.0.1
openpyxl                      3.0.10
ordereddict                   1.1
outdated                      0.2.1
packaging                     24.1
pandas                        2.2.2
pandas-flavor                 0.3.0
pandocfilters                 1.5.0
parmap                        1.6.0
parso                         0.8.3
PasteDeploy                   3.1.0
patsy                         0.5.3
persim                        0.3.5
pexpect                       4.8.0
phat                          1.5.0
phimaker                      0.1.3
phylotreelib                  1.22.1
pickleshare                   0.7.5
Pillow                        9.2.0
pingouin                      0.5.3
pip                           24.2
pkginfo                       1.11.1
plaster                       1.1.2
plaster-pastedeploy           1.0.1
platformdirs                  4.2.2
plotly                        5.10.0
pluggy                        1.5.0
poetry                        1.8.3
poetry-core                   1.9.0
poetry-plugin-export          1.8.0
POT                           0.8.2
prompt-toolkit                3.0.31
psutil                        5.9.2
ptyprocess                    0.7.0
pure-eval                     0.2.2
py3Dmol                       2.1.0
pyarrow                       12.0.0
pybind11                      2.11.1
pycairo                       1.23.0
pycparser                     2.21
pydub                         0.25.1
pyglet                        2.0.1
Pygments                      2.17.2
pynndescent                   0.5.7
pyobjc-core                   9.0
pyobjc-framework-Cocoa        9.0
pyparsing                     3.0.9
pyproject_hooks               1.0.0
PyQt5                         5.15.9
PyQt5-Qt5                     5.15.2
PyQt5-sip                     12.12.2
pyramid                       2.0.1
pyrr                          0.10.3
pyrsistent                    0.18.1
pytest                        8.2.0
python-dateutil               2.8.2
python-whois                  0.8.0
pytz                          2022.4
pytz-deprecation-shim         0.1.0.post0
pyzmq                         24.0.1
qc-procrustes                 0.0.0.post0
rapidfuzz                     3.2.0
readme-renderer               40.0
requests                      2.28.1
requests-toolbelt             1.0.0
rfc3986                       2.0.0
rich                          12.6.0
ripser                        0.6.4
rpy2                          3.5.4
scanpy                        1.10.0
scikit-learn                  1.5.1
scikit-tda                    1.0.0
scipy                         1.14.0
screeninfo                    0.8.1
seaborn                       0.13.2
seaborn-extensions            0.1.1
sequencelib                   2.18.5
session-info                  1.0.0
setuptools                    69.2.0
setuptools-scm                7.0.5
shellingham                   1.5.4
six                           1.16.0
skia-pathops                  0.7.4
snowballstemmer               2.2.0
soupsieve                     2.3.2.post1
Sphinx                        7.2.6
sphinxcontrib-applehelp       1.0.7
sphinxcontrib-devhelp         1.0.5
sphinxcontrib-htmlhelp        2.0.4
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          1.0.6
sphinxcontrib-serializinghtml 1.1.9
srt                           3.5.2
stack-data                    0.5.1
statsmodels                   0.13.2
stdlib-list                   0.8.0
svgelements                   1.8.4
tabulate                      0.8.10
tadasets                      0.0.4
tenacity                      8.1.0
texttable                     1.6.7
threadpoolctl                 3.1.0
tinycss2                      1.1.1
tk                            0.1.0
tomli                         2.0.1
tomlkit                       0.13.0
torch                         1.12.1
torch-topological             0.1.5
tornado                       6.2
tqdm                          4.64.1
traitlets                     5.4.0
translationstring             1.4
treedist                      1.0.1
trove-classifiers             2024.7.2
twine                         4.0.2
typing_extensions             4.11.0
tzdata                        2024.1
tzlocal                       4.2
ujson                         5.9.0
umap-learn                    0.5.6
urllib3                       1.26.12
venusian                      3.1.0
virtualenv                    20.26.3
watchdog                      2.1.9
wcwidth                       0.2.5
webencodings                  0.5.1
WebOb                         1.8.7
wheel                         0.43.0
wrapt                         1.15.0
xarray                        2022.10.0
xattr                         1.1.0
zipp                          3.16.2
zope.deprecation              5.0
zope.interface                6.4.post2
OnDraganov commented 3 weeks ago

With a fresh venv it does not throw the error. So possibly it might just be a warning that can be ignored? The pip list for the virtual environment is as follows:

Package             Version
------------------- -----------
chalc               3.1.3
contourpy           1.2.1
cycler              0.12.1
fonttools           4.53.1
h5py                3.11.0
hupper              1.12.1
kiwisolver          1.4.5
matplotlib          3.8.4
numpy               2.0.1
packaging           24.1
pandas              2.2.2
PasteDeploy         3.1.0
phimaker            0.1.3
pillow              10.4.0
pip                 24.0
plaster             1.1.2
plaster-pastedeploy 1.0.1
pyparsing           3.1.2
pyramid             2.0.1
python-dateutil     2.9.0.post0
pytz                2024.1
seaborn             0.13.2
setuptools          69.2.0
six                 1.16.0
translationstring   1.4
tzdata              2024.1
venusian            3.1.0
WebOb               1.8.8
zope.deprecation    5.0
zope.interface      7.0.1