-
Notifications
You must be signed in to change notification settings - Fork 186
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Error when running grnboost2 : ValueError: tuple is not allowed for map key #147
Comments
Hello, I am having exactly the same issue when running pyscenic with "-m genie3" mode, either locally or on an HPC cluster. I think there is a compatibility issue with msgpack and dask versions.Is it possible to have a look at it please or give any advice how we can troubleshoot this? Many thanks |
Reinstalling/Upgrading the distribution package helped. |
Unfortunately, this didn't work for me, also Penn HPC user. |
Unfortunately for me neither. |
Does downgrading Dask/distributed help? I've found this to be most stable when using |
I used the following installation steps. pip install pyscenic Got errors in running grnboost2 as above,did the following install/upgrades python -m pip install 'fsspec>=0.3.3 which fixed the issue. python3.6.3 on IBM LSF HPC cluster.
|
This worked for me too! |
Yeah! Though pyscenic requires dask==1.0.0 and distributed < 2.0.0, @smanne07 's answer worked for me too! |
This also works for me. Thanks a lot!! |
I am curious about why this work, and why the default requirement doesn't work? |
@cflerin, would you mind providing the commands to downgrade Dask/distributed/tornado? |
@huytran38 , you would run:
to downgrade. But see also #163 for other suggestions (including the suggestion to upgrade above). |
@cflerin, thank you! would if make any difference if I run the command with conda instead? conda install dask==1.0.0 distributed==1.28.1 tornado==6.0.3 |
@cflerin , so I downgraded and still have the error. Below is most of the error message I see on screen. If upgrading doesn't help, should I just uninstall anaconda and reinstall? distributed.protocol.core - CRITICAL - Failed to deserialize |
@huytran38 , You can use pip install within a conda environment so the original command will work. But for your ultimate problem, I would highly recommend using the multiprocessing script unless you really need Dask to split your run across multiple compute nodes. See here for details. |
@cflerin , thank you so much. I'm not familiar with pySCENIC. I'm using Dask is because of its ability to scale computation for a large dataframe, about 16GB. Even if I would want to try using the multiprocessing script, the usage instruction on pySCENIC page is still a bit vague for me. |
Hi, Just adding here if it helps anyone! I first tried as following!
Got the following error So I did as @smanne07 said;
Now it seems working. Below are the versions at the moment. |
Hi All, So the larger dataset took unusually large time (5-6 days) given the resources and previous experience with pyscenic and still did not finish since I tried with versions as mentioned above. So I interrupted and ran with a much smaller dataset. I guess the GRNboost2 worked fine. So I am not sre whether anything is going wrong when I use the large dataset or it is simply that I still have to wait much more (I have analysed similar sized dat with pyscenic before in around 48-72 hours). Below is the output when I used smaller dataset. Just to get your feedback based on the warnings showed with smaller dataset run to see whether it helps to solve the large dataset issue. Humbly suggest a progress tracking way as James suggested
Thanks and Kind regards, |
The "ValueError: tuple is not allowed for map key" issue seems to be due to the msgpack package version 1.0.0. Like @smanne07 said, it can be solved for grnboost by upgrading dask/distributed, but this breaks pyscenic further down the line in my experience. For me it was solved by installing dask==1.0.0, distributed'>=1.21.6,<2.0.0' as @cflerin suggests, but additionally installing msgpack'<1.0.0' as well. Hope it does for other as well, cheers! |
I was having the same issue and traced it to msgpack as well. It seems when msgpack released 1.0 it changed |
Thanks all for the feedback and testing on this! The new pySCENIC release 0.11.0 has updated packages and fixes that (I'm hoping) will fix this issue. So I'll close this for now, hopefully it can stay that way... |
Thanks for the suggestion, which helps a lot! |
Hi,
Thank you for the pyscenic package(previously used SCENIC R).
I am trying to run pyscenic following the tutorial with test data(pySCENIC - Full pipeline.ipynb).
When i am running the
adjacencies = grnboost2(expression_data=ex_matrix, tf_names=tf_names, verbose=True)
I got the following error :
preparing dask client parsing input /home/sasim/my_python-3.6.3/lib/python3.6/site-packages/arboreto/algo.py:214: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead. expression_matrix = expression_data.as_matrix() creating dask graph distributed.protocol.core - CRITICAL - Failed to deserialize Traceback (most recent call last): File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/protocol/core.py", line 108, in loads header = msgpack.loads(header, use_list=False, **msgpack_opts) File "msgpack/_unpacker.pyx", line 195, in msgpack._cmsgpack.unpackb ValueError: tuple is not allowed for map key distributed.core - ERROR - tuple is not allowed for map key Traceback (most recent call last): File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/core.py", line 347, in handle_comm msg = yield comm.read() File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 735, in run value = future.result() File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 742, in run yielded = self.gen.throw(*exc_info) # type: ignore File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/comm/tcp.py", line 218, in read frames, deserialize=self.deserialize, deserializers=deserializers File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 735, in run value = future.result() File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 209, in wrapper yielded = next(result) File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/comm/utils.py", line 85, in from_frames res = _from_frames() File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/comm/utils.py", line 71, in _from_frames frames, deserialize=deserialize, deserializers=deserializers File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/protocol/core.py", line 108, in loads header = msgpack.loads(header, use_list=False, **msgpack_opts) File "msgpack/_unpacker.pyx", line 195, in msgpack._cmsgpack.unpackb ValueError: tuple is not allowed for map key distributed.protocol.core - CRITICAL - Failed to deserialize Traceback (most recent call last): File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/protocol/core.py", line 108, in loads header = msgpack.loads(header, use_list=False, **msgpack_opts) File "msgpack/_unpacker.pyx", line 195, in msgpack._cmsgpack.unpackb ValueError: tuple is not allowed for map key shutting down client and local cluster finished Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/arboreto/algo.py", line 41, in grnboost2 early_stop_window_length=early_stop_window_length, limit=limit, seed=seed, verbose=verbose) File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/arboreto/algo.py", line 128, in diy seed=seed) File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/arboreto/core.py", line 403, in create_graph future_tf_matrix = client.scatter(tf_matrix, broadcast=True) File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/client.py", line 2071, in scatter hash=hash, File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/client.py", line 753, in sync return sync(self.loop, func, *args, **kwargs) File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/utils.py", line 331, in sync six.reraise(*error[0]) File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/six.py", line 693, in reraise raise value File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/utils.py", line 316, in f result[0] = yield future File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 735, in run value = future.result() File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 742, in run yielded = self.gen.throw(*exc_info) # type: ignore File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/client.py", line 1916, in _scatter timeout=timeout, File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 735, in run value = future.result() File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 742, in run yielded = self.gen.throw(*exc_info) # type: ignore File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/core.py", line 739, in send_recv_from_rpc result = yield send_recv(comm=comm, op=key, **kwargs) File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 735, in run value = future.result() File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 742, in run yielded = self.gen.throw(*exc_info) # type: ignore File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/core.py", line 533, in send_recv response = yield comm.read(deserializers=deserializers) File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 735, in run value = future.result() File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 742, in run yielded = self.gen.throw(*exc_info) # type: ignore File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/comm/tcp.py", line 218, in read frames, deserialize=self.deserialize, deserializers=deserializers File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 735, in run value = future.result() File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/tornado/gen.py", line 209, in wrapper yielded = next(result) File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/comm/utils.py", line 85, in from_frames res = _from_frames() File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/comm/utils.py", line 71, in _from_frames frames, deserialize=deserialize, deserializers=deserializers File "/home/sasim/my_python-3.6.3/lib/python3.6/site-packages/distributed/protocol/core.py", line 108, in loads header = msgpack.loads(header, use_list=False, **msgpack_opts) File "msgpack/_unpacker.pyx", line 195, in msgpack._cmsgpack.unpackb ValueError: tuple is not allowed for map key
Any help is greatly appreciated.
Best regards
Sasi
The text was updated successfully, but these errors were encountered: