Illumina / interop

C++ Library to parse Illumina InterOp files
http://illumina.github.io/interop/index.html
GNU General Public License v3.0
75 stars 26 forks source link

Recent InterOp Python Wheels do not run on Mac OS X High Sierra 10.13 #293

Closed lukato01 closed 2 years ago

lukato01 commented 2 years ago

Please advice on how to fix this error that i encountered while running command : python3.8 -m interop --test

File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/runpy.py", line 185, in _run_module_as_main mod_name, mod_spec, code = _get_module_details(mod_name, _Error) File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/runpy.py", line 144, in _get_module_details return _get_module_details(pkg_main_name, error) File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/runpy.py", line 111, in _get_module_details import(pkg_name) File "/usr/local/lib/python3.8/site-packages/interop/init.py", line 11, in from interop.core import * File "/usr/local/lib/python3.8/site-packages/interop/core.py", line 55, in import interop.py_interop_run_metrics as interop_metrics File "/usr/local/lib/python3.8/site-packages/interop/py_interop_run_metrics.py", line 13, in from . import _py_interop_run_metrics ImportError: dlopen(/usr/local/lib/python3.8/site-packages/interop/_py_interop_run_metrics.so, 2): Symbol not found: ____chkstk_darwin Referenced from: /usr/local/lib/python3.8/site-packages/interop/_py_interop_run_metrics.so (which was built for Mac OS X 11.6) Expected in: /usr/lib/libSystem.B.dylib in /usr/local/lib/python3.8/site-packages/interop/_py_interop_run_metrics.so

ezralanglois commented 2 years ago

Are you running the new M1 Mac OSX?

If so, there is no automated build for that yet. You can see this issue: https://github.com/Illumina/interop/issues/282

Basically, you need to build it yourself.

lukato01 commented 2 years ago

No, i am running on macOS High Sierra version 10.13

ezralanglois commented 2 years ago

Looks like our recent switch to Github Actions caused an inadvertent switch of the build job to a later version of the Mac OS.

I may be able to work around this with MACOSX_DEPLOYMENT_TARGET. It looks like I may also need to use a different Python environment from what is installed on Github actions.

There is a nice discussion here on the issue https://github.com/fonttools/skia-pathops/issues/41

I will look into fixing this

ezralanglois commented 2 years ago

@lukato01 If you have a chance, can you check whether these new artifacts work? I don't have that version of OS X to test whether this worked.

https://github.com/Illumina/interop/suites/7407782942/artifacts/302085019

This will give a zip file with all the wheels, so you can select the python version you want to install.

lukato01 commented 2 years ago

i tested it and artifact interop-1.1.25.dev2-cp39-cp39-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl works.

lukato01 commented 2 years ago

now I am getting this error Traceback (most recent call last): File "basespace.py", line 67, in <module> get_metrics_from_basespace(args.run_folder, args.output_folder) File "basespace.py", line 35, in get_metrics_from_basespace per_lane_summary = pd.DataFrame(summary(run_folder, 'Lane')) File "/usr/local/lib/python3.8/site-packages/interop/core.py", line 300, in summary run_metrics = read(run_metrics, **extra) File "/usr/local/lib/python3.8/site-packages/interop/core.py", line 811, in read run_metrics.read(run) File "/usr/local/lib/python3.8/site-packages/interop/py_interop_run_metrics.py", line 280, in read return _py_interop_run_metrics.run_metrics_read(self, *args) TypeError: Wrong number or type of arguments for overloaded function 'run_metrics_read'. Possible C/C++ prototypes are: illumina::interop::model::metrics::run_metrics::read(std::string const &,size_t const) illumina::interop::model::metrics::run_metrics::read(std::string const &) illumina::interop::model::metrics::run_metrics::read(std::string const &,std::vector< unsigned char,std::allocator< unsigned char > > const &,size_t const,bool const) illumina::interop::model::metrics::run_metrics::read(std::string const &,std::vector< unsigned char,std::allocator< unsigned char > > const &,size_t const) illumina::interop::model::metrics::run_metrics::read(std::string const &,std::vector< unsigned char,std::allocator< unsigned char > > const &)

ezralanglois commented 2 years ago

i tested it and artifact interop-1.1.25.dev2-cp39-cp39-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl works.

Thanks for testing this, I appreciate it.

ezralanglois commented 2 years ago

now I am getting this error Traceback (most recent call last): File "basespace.py", line 67, in <module> get_metrics_from_basespace(args.run_folder, args.output_folder) File "basespace.py", line 35, in get_metrics_from_basespace per_lane_summary = pd.DataFrame(summary(run_folder, 'Lane')) File "/usr/local/lib/python3.8/site-packages/interop/core.py", line 300, in summary run_metrics = read(run_metrics, **extra) File "/usr/local/lib/python3.8/site-packages/interop/core.py", line 811, in read run_metrics.read(run) File "/usr/local/lib/python3.8/site-packages/interop/py_interop_run_metrics.py", line 280, in read return _py_interop_run_metrics.run_metrics_read(self, *args) TypeError: Wrong number or type of arguments for overloaded function 'run_metrics_read'. Possible C/C++ prototypes are: illumina::interop::model::metrics::run_metrics::read(std::string const &,size_t const) illumina::interop::model::metrics::run_metrics::read(std::string const &) illumina::interop::model::metrics::run_metrics::read(std::string const &,std::vector< unsigned char,std::allocator< unsigned char > > const &,size_t const,bool const) illumina::interop::model::metrics::run_metrics::read(std::string const &,std::vector< unsigned char,std::allocator< unsigned char > > const &,size_t const) illumina::interop::model::metrics::run_metrics::read(std::string const &,std::vector< unsigned char,std::allocator< unsigned char > > const &)

What is the type of run_folder? Or is it None? I have seen that error when the type is something unexpected or None

lukato01 commented 2 years ago

here are the files that are in the run folder which were downloaded from the Illumina BaseSpace

`User:Desktop$ ls kit_basespace_v2_eq_a/*

kit_basespace_v2_eq_a/RunInfo.xml

kit_basespace_v2_eq_a/InterOp: CorrectedIntMetricsOut.bin ExtractionMetricsOut.bin QMetricsByLaneOut (1).bin TileMetricsOut.bin ErrorMetricsOut.bin QMetrics2030Out.bin QMetricsOut.bin`

ezralanglois commented 2 years ago

Prior to this line add per_lane_summary = pd.DataFrame(summary(run_folder, 'Lane'))

print(run_folder)
print(type(run_folder))
per_lane_summary = pd.DataFrame(summary(run_folder, 'Lane'))

The problem is likely the type of run_folder

lukato01 commented 2 years ago

['/Users/Olga/Desktop/kit_basespace_v2_eq_a'] <class 'list'> Traceback (most recent call last): File "basespace.py", line 68, in <module> get_metrics_from_basespace(args.run_folder, args.output_folder) File "basespace.py", line 36, in get_metrics_from_basespace per_lane_summary = pd.DataFrame(summary(run_folder, 'Lane')) File "/usr/local/lib/python3.8/site-packages/interop/core.py", line 300, in summary run_metrics = read(run_metrics, **extra) File "/usr/local/lib/python3.8/site-packages/interop/core.py", line 811, in read run_metrics.read(run) File "/usr/local/lib/python3.8/site-packages/interop/py_interop_run_metrics.py", line 280, in read return _py_interop_run_metrics.run_metrics_read(self, *args) TypeError: Wrong number or type of arguments for overloaded function 'run_metrics_read'. Possible C/C++ prototypes are: illumina::interop::model::metrics::run_metrics::read(std::string const &,size_t const) illumina::interop::model::metrics::run_metrics::read(std::string const &) illumina::interop::model::metrics::run_metrics::read(std::string const &,std::vector< unsigned char,std::allocator< unsigned char > > const &,size_t const,bool const) illumina::interop::model::metrics::run_metrics::read(std::string const &,std::vector< unsigned char,std::allocator< unsigned char > > const &,size_t const) illumina::interop::model::metrics::run_metrics::read(std::string const &,std::vector< unsigned char,std::allocator< unsigned char > > const &)

ezralanglois commented 2 years ago

So run folder is a list not a str. That is not supported. If the list contains strings, then you can iterate over the list and load runs individually.