ebi-gene-expression-group / scanpy-scripts

Scripts for using scanpy
Apache License 2.0
30 stars 13 forks source link

FDG and paga #94

Closed pinin4fjords closed 3 years ago

pinin4fjords commented 3 years ago

Currently, if we run PAGA, which populates .uns['paga'], then RunFDG, specifying 'paga' as the initialisation, we get an error like:

drawing single-cell graph using layout 'fr' Traceback (most recent call last): File "/usr/local/tools/_conda/envs/__scanpy-scripts@0.3.2/bin/scanpy-cli", line 10, in <module> sys.exit(cli()) File "/usr/local/tools/_conda/envs/__scanpy-scripts@0.3.2/lib/python3.6/site-packages/click/core.py", line 829, in __call__ return self.main(*args, **kwargs) File "/usr/local/tools/_conda/envs/__scanpy-scripts@0.3.2/lib/python3.6/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/usr/local/tools/_conda/envs/__scanpy-scripts@0.3.2/lib/python3.6/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/usr/local/tools/_conda/envs/__scanpy-scripts@0.3.2/lib/python3.6/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/usr/local/tools/_conda/envs/__scanpy-scripts@0.3.2/lib/python3.6/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/local/tools/_conda/envs/__scanpy-scripts@0.3.2/lib/python3.6/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/usr/local/tools/_conda/envs/__scanpy-scripts@0.3.2/lib/python3.6/site-packages/scanpy_scripts/cmd_utils.py", line 43, in cmd func(adata, **kwargs) File "/usr/local/tools/_conda/envs/__scanpy-scripts@0.3.2/lib/python3.6/site-packages/scanpy_scripts/lib/_fdg.py", line 31, in fdg **kwargs, File "/usr/local/tools/_conda/envs/__scanpy-scripts@0.3.2/lib/python3.6/site-packages/scanpy/tools/_draw_graph.py", line 117, in draw_graph obsp=obsp, File "/usr/local/tools/_conda/envs/__scanpy-scripts@0.3.2/lib/python3.6/site-packages/scanpy/tools/_utils.py", line 117, in get_init_pos_from_paga raise ValueError('Plot PAGA first, so that adata.uns[\'paga\']' ValueError: Plot PAGA first, so that adata.uns['paga']with key 'pos'.

I believe this is because sc.tl.paga does not set .uns['paga']['pos'], for which you need to run sc.pl.paga. To generate an object with the correct slot set, we need to modify the CLI layer in one of two ways:

  1. Modify our call to sc.tl.paga also run sc.pl.paga (if specified), such that we don't have to explicitly run the plotting step. This would require passing at least some of the plotting params through the tl.paga wrapper, but is likely the least disruptive for the user.
  2. Or modify the sc.pl.paga step to optionally output the anndata object as well as the plot file it currently does. We'd then have to run the plotting explicitly after PAGA and before FDG.

Which way would you like to go @pcm32 ?

pinin4fjords commented 3 years ago

Addressed via https://github.com/ebi-gene-expression-group/scanpy-scripts/pull/95