YeoLab / clipper

A tool to identify CLIP-seq peaks
Other
64 stars 41 forks source link

ERROR:root:failed to build spline #72

Closed b3b3gg closed 4 years ago

b3b3gg commented 5 years ago

Hello,

We are having issues running clipper on our system. Specifically, we get the below error for the minimal "clipper --processors=16 -b clip1.k.bam -s hg19 -o clip1.k.peaks.bed." We do not get this error when running clipper with mm10. Is there a fix?

ERROR:root:failed to build spline (m>k) failed for hidden m: fpcurf0:m=2, [0 1], [3. 0.], 11, 3, None ERROR:root:peak finding failed:, ENSG00000008083.9, (m>k) failed for hidden m: fpcurf0:m=2 Traceback (most recent call last): File "/home/bebegg/anaconda2/bin/clipper", line 11, in load_entry_point('clipper==0.2.0', 'console_scripts', 'clipper')() File "/home/bebegg/anaconda2/lib/python2.7/site-packages/clipper-0.2.0-py2.7-linux-x86_64.egg/clipper/src/peakfinder.py", line 712, in call_main main(options) File "/home/bebegg/anaconda2/lib/python2.7/site-packages/clipper-0.2.0-py2.7-linux-x86_64.egg/clipper/src/peakfinder.py", line 568, in main peaks_dicts.append(job.get(timeout=options.timeout)) File "/home/bebegg/anaconda2/lib/python2.7/multiprocessing/pool.py", line 572, in get raise self._value multiprocessing.pool.MaybeEncodingError: Error sending result: 'error('(m>k) failed for hidden m: fpcurf0:m=2',)'. Reason: 'PicklingError("Can't pickle <class 'dfitpack.error'>: import of module dfitpack failed",)'

Thanks! Bridget

byee4 commented 5 years ago

Hi

The graduate student who has been maintaining this repo has since left and unfortunately we do not yet have a replacement to really dig into this issue, but maybe a similar one can provide some hints: #42

b3b3gg commented 5 years ago

Thanks. I took a look at that thread previously and the only solution was to edit the call_peaks script, although the position was slightly ambiguous. Is it possible to take a look at that solution on your end? I've tried placing the while loop in several places to no avail.

snaqvi1990 commented 5 years ago

Hi Bridget! In a very weird coincidence, I have been running into the same problem. If I place the while loop from #42 after the following line in call_peak.py, clipper runs, although the warnings mentioned in #42 still apply:

        fitter = SmoothingSpline(xvals, data, smoothing_factor=initial_smoothing_value,
                        lossFunction="get_turn_penalized_residuals",
                        threshold=threshold,
                        num_reads=Nreads)

add right after the above line

        while fitter.k >= len(xvals):
            fitter.k = len(xvals)-1

Sahin

algaebrown commented 4 years ago

[similar problem on stackoverflow] (https://stackoverflow.com/questions/32230362/python-interpolate-univariatespline-package-error-mk-failed-for-hidden-m).

According to scipy the degree k must be larger than number of data points len(xvals)

algaebrown commented 4 years ago

Fixed in new CLIPper release