aertslab / pySCENIC

pySCENIC is a lightning-fast python implementation of the SCENIC pipeline (Single-Cell rEgulatory Network Inference and Clustering) which enables biologists to infer transcription factors, gene regulatory networks and cell types from single-cell RNA-seq data.
http://scenic.aertslab.org
GNU General Public License v3.0
433 stars 181 forks source link

[BUG] #302

Open realzehuali opened 3 years ago

realzehuali commented 3 years ago

When I was running: df = prune2df(dbs, modules, MOTIF_ANNOTATIONS_FNAME, client_or_address = 'custom_multiprocessing', num_workers = 6) on my Windwos laptop with 64G RAM and 16 threads i7 CPU

it turned out to be this error:

BrokenPipeError Traceback (most recent call last) c:\users\msi\anaconda3\envs\scvelo\lib\site-packages\multiprocessing_on_dill\connection.py in _recv_bytes(self, maxsize) 300 try: --> 301 ov, err = _winapi.ReadFile(self._handle, bsize, 302 overlapped=True)

BrokenPipeError: [WinError 109] 管道已结束。

During handling of the above exception, another exception occurred:

EOFError Traceback (most recent call last)

in 1 with ProgressBar(): ----> 2 df = prune2df(dbs, modules, MOTIF_ANNOTATIONS_FNAME, client_or_address = 'custom_multiprocessing', num_workers = 6) c:\users\msi\anaconda3\envs\scvelo\lib\site-packages\pyscenic\prune.py in prune2df(rnkdbs, modules, motif_annotations_fname, rank_threshold, auc_threshold, nes_threshold, motif_similarity_fdr, orthologuous_identity_threshold, weighted_recovery, client_or_address, num_workers, module_chunksize, filter_for_annotation) 398 partial(from_delayed, meta=DF_META_DATA) if client_or_address != 'custom_multiprocessing' else pd.concat 399 ) --> 400 return _distributed_calc( 401 rnkdbs, 402 modules, c:\users\msi\anaconda3\envs\scvelo\lib\site-packages\pyscenic\prune.py in _distributed_calc(rnkdbs, modules, motif_annotations_fname, transform_func, aggregate_func, motif_similarity_fdr, orthologuous_identity_threshold, client_or_address, num_workers, module_chunksize) 231 ).start() 232 # Retrieve the name of the temporary file to which the data is stored. This is a blocking operation. --> 233 fnames = [recv.recv() for recv in receivers] 234 # Load all data from disk and concatenate. 235 def load(fname): c:\users\msi\anaconda3\envs\scvelo\lib\site-packages\pyscenic\prune.py in (.0) 231 ).start() 232 # Retrieve the name of the temporary file to which the data is stored. This is a blocking operation. --> 233 fnames = [recv.recv() for recv in receivers] 234 # Load all data from disk and concatenate. 235 def load(fname): c:\users\msi\anaconda3\envs\scvelo\lib\site-packages\multiprocessing_on_dill\connection.py in recv(self) 248 self._check_closed() 249 self._check_readable() --> 250 buf = self._recv_bytes() 251 return ForkingPickler.loads(buf.getbuffer()) 252 c:\users\msi\anaconda3\envs\scvelo\lib\site-packages\multiprocessing_on_dill\connection.py in _recv_bytes(self, maxsize) 319 except OSError as e: 320 if e.winerror == _winapi.ERROR_BROKEN_PIPE: --> 321 raise EOFError 322 else: 323 raise EOFError: I was using pyscenic 0.11.2 dask 2021.2.0 distributed 2021.2.0 multiprocessing-on-dill 3.5.0a4 Thanks for any help!!!
Zymaniswenzai commented 3 years ago

Hi, I had the same issue as you. But after a month of torture I have completed my analysis and my experience is posted here

I hope you found that useful.

realzehuali commented 3 years ago

Thanks. @Zymaniswenzai. I tried to downgrade pyscenic to version 0.11.1 and it worked without this issue. Might be because of the ctxcore problem I guess.

roeslib commented 1 year ago

I encounter the same problem could you please tell me how did you solve it?