macs3-project / MACS

MACS -- Model-based Analysis of ChIP-Seq
https://macs3-project.github.io/MACS/
BSD 3-Clause "New" or "Revised" License
697 stars 268 forks source link

Bug: python3.10 install #520

Open vschulz opened 2 years ago

vschulz commented 2 years ago

Describe the bug Python 3.10 has a change, I think in cython where use_tracing is now replaced by tracing. It causes failure to install at Prob.c, MACS2/IO/Parser.c and probably more. It can be overcome in one file like sed -i 's/tstate->use_tracing/tstate->tracing/g' Prob.c

To Reproduce To see the problem with python 3.10, you first need to overcome the python version test bug in setup.py eg replace if float(sys.version[:3])<3.6: with (terrible bad hack) if float(sys.version[:3])>3.6:

Expected behavior A clear and concise description of what you expected to happen.

Screenshots If applicable, add screenshots to help explain your problem.

System (please complete the following information):

Additional context x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/local/lib/python3.10/dist-packages/numpy/core/include -I/usr/include/python3.10 -c MACS2/Prob.c -o build/temp.linux-x86_64-3.10/MACS2/Prob.o -w -O3 -ffast-math -g0 MACS2/Prob.c: In function ‘__Pyx_call_return_trace_func’: MACS2/Prob.c:1412:15: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘use_tracing’; did you mean ‘tracing’?

taoliu commented 1 year ago

@vschulz First, could you switch to MACS3 branch of codes since right now we are actively testing the codes under python3.8/3.9/3.10? If problem still exists in MACS3, perhaps regenerate a C file Prob.c from Prob.pyx using Cython under Python3.10?

vschulz commented 1 year ago

Macs3 installs uneventfully using pip install under python3.10. It successfully ran and gave the same number of peaks as macs2 on one sample.