brainglobe / brainglobe/brainreg

[BUG] Installation via metapackage doesn't come with appropriate libpng on Silicon Mac

Open
#205 5 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Python
Stars
150
Forks
37
Avg merge
3d 19h
Merged PRs (30d)
5

Description

**Describe the bug**
`brainreg` should be useable on all platforms when installed via the metapackage on PyPI. Local installation on M2 Mac seems successful, but running the CLI on sample data fails by not finding the `libpng` dynamic library.

**To Reproduce**
Run this bash script on a Silicon Mac, adapting paths to `conda`/`mamba` and to sample data from GIN.

```bash
#!/usr/bin/env bash -l
mamba env remove -n brainreg-metapackage
mamba create -n brainreg-metapackage python=3.10 -y
mamba activate brainreg-metapackage
which python
which pip
python -m pip install brainglobe
which brainreg
brainreg ~/Downloads/brainreg-test-data/input/brain/ ~/Downloads/brainreg-metapackage-output/ -v 5 2 2 --orientation sal --atlas allen_mouse_25um
```

For me this results in:

```bash
dyld[65993]: Library not loaded: /usr/local/opt/libpng/lib/libpng16.16.dylib
Referenced from: <25F3C636-D4F1-34C5-BF80-7A736D353377> /Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainreg/core/bin/nifty_reg/osX/reg_aladin
Reason: tried: '/usr/local/opt/libpng/lib/libpng16.16.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/libpng/lib/libpng16.16.dylib' (no such file), '/usr/local/opt/libpng/lib/libpng16.16.dylib' (no such file), '/usr/local/lib/libpng16.16.dylib' (no such file), '/usr/lib/libpng16.16.dylib' (no such file, not in dyld cache)
```

Full relevant stack trace:
```bash
subprocess.CalledProcessError: Command '/Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainreg/core/bin/nifty_reg/osX/reg_aladin -ln 6 -lp 5 -flo "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/brain_filtered.nii" -ref "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/downsampled_filtered.nii" -aff "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/affine_matrix.txt" -res "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/affine_registered_atlas_brain.nii" -omp 6' died with .

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainreg/core/backend/niftyreg/registration.py", line 67, in register_affine
safe_execute_command(
File "/Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainglobe_utils/general/system.py", line 407, in safe_execute_command
raise SafeExecuteCommandError(
brainglobe_utils.general.system.SafeExecuteCommandError:
-------------------------
Process failed:
dyld[65993]: Library not loaded: /usr/local/opt/libpng/lib/libpng16.16.dylib
Referenced from: <25F3C636-D4F1-34C5-BF80-7A736D353377> /Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainreg/core/bin/nifty_reg/osX/reg_aladin
Reason: tried: '/usr/local/opt/libpng/lib/libpng16.16.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/libpng/lib/libpng16.16.dylib' (no such file), '/usr/local/opt/libpng/lib/libpng16.16.dylib' (no such file), '/usr/local/lib/libpng16.16.dylib' (no such file), '/usr/lib/libpng16.16.dylib' (no such file, not in dyld cache)
-------------------------

-------------------------
please read the logs at /Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/affine.log and /Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/affine.err
-------------------------
command: /Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainreg/core/bin/nifty_reg/osX/reg_aladin -ln 6 -lp 5 -flo "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/brain_filtered.nii" -ref "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/downsampled_filtered.nii" -aff "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/affine_matrix.txt" -res "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/affine_registered_atlas_brain.nii" -omp 6
-------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/bin/brainreg", line 8, in
sys.exit(main())
File "/Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainreg/core/cli.py", line 288, in main
register(
File "/Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainreg/core/main.py", line 65, in main
run_niftyreg(
File "/Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainreg/core/backend/niftyreg/run.py", line 105, in run_niftyreg
brain_reg.register_affine()
File "/Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainreg/core/backend/niftyreg/registration.py", line 73, in register_affine
raise RegistrationError(
brainreg.core.backend.niftyreg.registration.RegistrationError: Affine registration failed;
-------------------------
Process failed:
dyld[65993]: Library not loaded: /usr/local/opt/libpng/lib/libpng16.16.dylib
Referenced from: <25F3C636-D4F1-34C5-BF80-7A736D353377> /Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainreg/core/bin/nifty_reg/osX/reg_aladin
Reason: tried: '/usr/local/opt/libpng/lib/libpng16.16.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/libpng/lib/libpng16.16.dylib' (no such file), '/usr/local/opt/libpng/lib/libpng16.16.dylib' (no such file), '/usr/local/lib/libpng16.16.dylib' (no such file), '/usr/lib/libpng16.16.dylib' (no such file, not in dyld cache)
-------------------------

-------------------------
please read the logs at /Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/affine.log and /Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/affine.err
-------------------------
command: /Users/alessandrofelder/mambaforge/envs/brainreg-metapackage/lib/python3.10/site-packages/brainreg/core/bin/nifty_reg/osX/reg_aladin -ln 6 -lp 5 -flo "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/brain_filtered.nii" -ref "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/downsampled_filtered.nii" -aff "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/affine_matrix.txt" -res "/Users/alessandrofelder/Downloads/brainreg-metapackage-output/niftyreg/affine_registered_atlas_brain.nii" -omp 6
-------------------------

```

**Expected behaviour**
`brainreg` successfully runs on the sample data on Silicon Mac

**Log file**
Please attach the log file if relevant (e.g. `output/cellfinder_2019-12-17_13-29-46.log`)

**Screenshots**

\

**Computer used (please complete the following information):**

- OS: macOS
- Version: Sonoma 14.5
- Hardware specs: M2

**Additional context**
Thanks to Ritu Jacob for reporting on zulip 🙏

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the provided bash installation and brainreg CLI command on an M2 Mac, then inspect the packaged brainreg/core/bin/nifty_reg/osX/reg_aladin dependency failure. Check how the PyPI brainglobe metapackage supplies libpng and rerun the sample-data command after the packaging issue is addressed. Done means brainreg completes successfully on the reported Silicon Mac setup.

Written by the indexing model from the issue text.

Assessment

Tech stack
bash, macos, python
Domain
build-system, cli, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.