Skip to content
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

OrdinationResults formatting assumes pd.Series on certain attributes #1972

Open
wasade opened this issue Mar 17, 2024 · 0 comments
Open

OrdinationResults formatting assumes pd.Series on certain attributes #1972

wasade opened this issue Mar 17, 2024 · 0 comments

Comments

@wasade
Copy link
Collaborator

wasade commented Mar 17, 2024

The OrdinationResults object indicates in its docstring that eigvals and proportion_explained are to be pd.Series but this is not verified. A consequence is that, while np.ndarray can be provided and is a reasonable data type to use for those attributes, the IO registry fails on write as it correctly assumes that these attributes are pd.Series. Example traceback is below.

One reasonable path forward would be to relax the doctring, and cast on instantiation of OrdinationResults. Or, to gracefully error if the expected information isn't provided.

It may be the case that additional verification would be appropriate if for example there are index assumptions with the eigvals attribute

Traceback (most recent call last):
  File "export-pcoa-to-qza.py", line 14, in <module>
    res_ar = qiime2.Artifact.import_data('PCoAResults', res)
  File "/home/mcdonadt/miniconda3/envs/qiime2-amplicon-2023.9/lib/python3.8/site-packages/qiime2/sdk/result.py", line 329, in import_data
    return cls._from_view(type_, view, view_type, provenance_capture,
  File "/home/mcdonadt/miniconda3/envs/qiime2-amplicon-2023.9/lib/python3.8/site-packages/qiime2/sdk/result.py", line 357, in _from_view
    result = transformation(view, validate_level)
  File "/home/mcdonadt/miniconda3/envs/qiime2-amplicon-2023.9/lib/python3.8/site-packages/qiime2/core/transform.py", line 70, in transformation
    new_view = transformer(view)
  File "/home/mcdonadt/miniconda3/envs/qiime2-amplicon-2023.9/lib/python3.8/site-packages/qiime2/core/transform.py", line 221, in wrapped
    file_view = transformer(view)
  File "/home/mcdonadt/miniconda3/envs/qiime2-amplicon-2023.9/lib/python3.8/site-packages/q2_types/ordination/_transformer.py", line 33, in _1
    data.write(str(ff), format='ordination')
  File "/home/mcdonadt/miniconda3/envs/qiime2-amplicon-2023.9/lib/python3.8/site-packages/skbio/io/registry.py", line 673, in write
    return registry.write(self, into=file, format=format, **kwargs)
  File "/home/mcdonadt/miniconda3/envs/qiime2-amplicon-2023.9/lib/python3.8/site-packages/skbio/io/registry.py", line 619, in write
    writer(obj, into, **kwargs)
  File "/home/mcdonadt/miniconda3/envs/qiime2-amplicon-2023.9/lib/python3.8/site-packages/skbio/io/registry.py", line 1082, in wrapped_writer
    writer_function(obj, fhs[-1], **kwargs)
  File "/home/mcdonadt/miniconda3/envs/qiime2-amplicon-2023.9/lib/python3.8/site-packages/skbio/io/format/ordination.py", line 370, in _ordination_results_to_ordination
    _write_vector_section(fh, 'Eigvals', obj.eigvals)
  File "/home/mcdonadt/miniconda3/envs/qiime2-amplicon-2023.9/lib/python3.8/site-packages/skbio/io/format/ordination.py", line 387, in _write_vector_section
    fh.write(_format_vector(vector.values))
AttributeError: 'numpy.ndarray' object has no attribute 'values'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant