biocore / emperor

Emperor a tool for the analysis and visualization of large microbial ecology datasets
http://biocore.github.io/emperor/
Other
52 stars 50 forks source link

Possible issue when validating feature metadata #733

Closed mortonjt closed 4 years ago

mortonjt commented 5 years ago

I'm running into an issue when there is missing data in the feature metadata

qiime emperor biplot   --i-biplot biplot.qza   --m-sample-metadata-file 2019-08-09_doty_metabolomics_normalized_cpm_feature_md.tsv metab_diffs.qza   --m-feature-metadata-file Doty_taxonomy.tsv micro_diffs.qza   --p-number-of-features 100   --p-ignore-missing-samples   --o-visualization omics-biplot_.qzv --verbose
Traceback (most recent call last):
  File "/Users/jmorton/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/q2cli/commands.py", line 327, in __call__
    results = action(**arguments)
  File "</Users/jmorton/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/decorator.py:decorator-gen-388>", line 2, in biplot
  File "/Users/jmorton/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/qiime2/sdk/action.py", line 240, in bound_callable
    output_types, provenance)
  File "/Users/jmorton/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/qiime2/sdk/action.py", line 445, in _callable_executor_
    ret_val = self._callable(output_dir=temp_dir, **view_args)
  File "/Users/jmorton/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/q2_emperor/_plot.py", line 95, in biplot
    plot_name='biplot')
  File "/Users/jmorton/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/q2_emperor/_plot.py", line 41, in generic_plot
    procrustes=procrustes, remote='.')
  File "/Users/jmorton/Documents/dev/emperor/emperor/core.py", line 253, in __init__
    ignore_missing_samples)
  File "/Users/jmorton/Documents/dev/emperor/emperor/core.py", line 339, in _validate_metadata
    data=data)
  File "/Users/jmorton/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/pandas/core/frame.py", line 424, in __init__
    copy=copy)
  File "/Users/jmorton/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/pandas/core/internals/construction.py", line 167, in init_ndarray
    return create_block_manager_from_blocks([values], [columns, index])
  File "/Users/jmorton/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/pandas/core/internals/managers.py", line 1660, in create_block_manager_from_blocks
    construction_error(tot_items, blocks[0].shape[1:], axes, e)
  File "/Users/jmorton/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/pandas/core/internals/managers.py", line 1691, in construction_error
    passed, implied))
ValueError: Shape of passed values is (2, 22), indices imply (2, 34)

Plugin error from emperor:

  Shape of passed values is (2, 22), indices imply (2, 34)

See above for debug info.

I've narrowed it down to this line - there maybe something going with the padding. I have a temporary solution by replacing that block with

metadata, _ = metadata.align(matrix, axis=0, join='right')

Files are in this dropbox link: https://www.dropbox.com/sh/ryzblx17zyharxy/AADRYvFXiLTmlRHvWPsfBFlUa?dl=0