Cannot import .biom file

I am trying to import a v1.0.0 .biom file that was created in R using the biomformat package.
The biom file includes sample metadata and taxonomic information.

The biom file looks like this:

{`
	"id":{},
	"format":["Biological Observation Matrix 1.0.0-dev"],
	"format_url":["http://biom-format.org/documentation/format_versions/biom-1.0.html"],
	"type":["OTU table"],
	"generated_by":["biomformat 1.2.0"],
	"date":["2017-09-21 14:36:28"],
	"matrix_type":["dense"],
	"matrix_element_type":["int"],
	"shape":[5,6],
	"rows":[
		{"id":["GG_OTU_1"],"metadata":["k__Bacteria","p__Proteobacteria","c__Gammaproteobacteria","o__Enterobacteriales","f__Enterobacteriaceae","g__Escherichia","s__"]},
		{"id":["GG_OTU_2"],"metadata":["k__Bacteria","p__Cyanobacteria","c__Nostocophycideae","o__Nostocales","f__Nostocaceae","g__Dolichospermum","s__"]},
		{"id":["GG_OTU_3"],"metadata":["k__Archaea","p__Euryarchaeota","c__Methanomicrobia","o__Methanosarcinales","f__Methanosarcinaceae","g__Methanosarcina","s__"]},
		{"id":["GG_OTU_4"],"metadata":["k__Bacteria","p__Firmicutes","c__Clostridia","o__Halanaerobiales","f__Halanaerobiaceae","g__Halanaerobium","s__Halanaerobiumsaccharolyticum"]},
		{"id":["GG_OTU_5"],"metadata":["k__Bacteria","p__Proteobacteria","c__Gammaproteobacteria","o__Enterobacteriales","f__Enterobacteriaceae","g__Escherichia","s__"]}
		],
	"columns":[
		{"id":["Sample1"],"metadata":["CGCTTATCGAGA","CATGCTGCCTCCCGTAGGAGT","gut","human gut"]},
		{"id":["Sample2"],"metadata":["CATACCAGTAGC","CATGCTGCCTCCCGTAGGAGT","gut","human gut"]},
		{"id":["Sample3"],"metadata":["CTCTCTACCTGT","CATGCTGCCTCCCGTAGGAGT","gut","human gut"]},
		{"id":["Sample4"],"metadata":["CTCTCGGCCTGT","CATGCTGCCTCCCGTAGGAGT","skin","human skin"]},
		{"id":["Sample5"],"metadata":["CTCTCTACCAAT","CATGCTGCCTCCCGTAGGAGT","skin","human skin"]},
		{"id":["Sample6"],"metadata":["CTAACTACCAAT","CATGCTGCCTCCCGTAGGAGT","skin","human skin"]}
		],
	"data": [[0,0,1,0,0,0],
			 [5,1,0,2,3,1],
			 [0,0,1,4,2,0],
			 [2,1,1,0,0,1],
			 [0,1,1,0,0,0]]
}

With

> qiime tools import \
> --input-path yyy.biom \
> --type 'FeatureTable[Frequency]' \
> --source-format BIOMV100Format \ 
> --output-path yyy.qza

I got the following output:

Traceback (most recent call last):
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/bin/qiime", line 6, in <module>
    sys.exit(q2cli.__main__.qiime())
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/q2cli/tools.py", line 111, in import_data
    view_type=source_format)
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/qiime2/sdk/result.py", line 192, in import_data
    return cls._from_view(type_, view, view_type, provenance_capture)
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/qiime2/sdk/result.py", line 217, in _from_view
    result = transformation(view)
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/qiime2/core/transform.py", line 59, in transformation
    new_view = transformer(view)
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/qiime2/core/transform.py", line 207, in wrapped
    file_view = transformer(view)
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/q2_types/feature_table/_transformer.py", line 128, in _8
    data = _parse_biom_table_v100(ff)
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/q2_types/feature_table/_transformer.py", line 46, in _parse_biom_table_v100
    table = biom.Table.from_json(json.load(fh))
  File "/home/akense/programs/miniconda3/envs/qiime2.env.analysis/lib/python3.5/site-packages/biom_format-2.1.5-py3.5-linux-x86_64.egg/biom/table.py", line 3672, in from_json
    dtype = MATRIX_ELEMENT_TYPE[json_table['matrix_element_type']]
TypeError: unhashable type: 'list'

Is there something amiss with the biom file itself?

Thanks!

A quick check with biom has the following to say:

$ biom validate-table -i adrians_file.biom
Traceback (most recent call last):
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/bin/biom", line 6, in <module>
    sys.exit(biom.cli.cli())
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/lib/python3.5/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/lib/python3.5/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/lib/python3.5/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/lib/python3.5/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/lib/python3.5/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/lib/python3.5/site-packages/biom_format-2.1.5-py3.5-macosx-10.6-x86_64.egg/biom/cli/table_validator.py", line 49, in validate_table
    valid, report = _validate_table(input_fp, format_version, detailed_report)
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/lib/python3.5/site-packages/biom_format-2.1.5-py3.5-macosx-10.6-x86_64.egg/biom/cli/table_validator.py", line 62, in _validate_table
    detailed_report=detailed_report)
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/lib/python3.5/site-packages/biom_format-2.1.5-py3.5-macosx-10.6-x86_64.egg/biom/cli/table_validator.py", line 113, in __call__
    detailed_report=detailed_report)
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/lib/python3.5/site-packages/biom_format-2.1.5-py3.5-macosx-10.6-x86_64.egg/biom/cli/table_validator.py", line 97, in run
    return self._validate_json(**kwargs)
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/lib/python3.5/site-packages/biom_format-2.1.5-py3.5-macosx-10.6-x86_64.egg/biom/cli/table_validator.py", line 305, in _validate_json
    status_msg = method(table_json)
  File "/Users/matthew/miniconda3/envs/q2dev-2017.9/lib/python3.5/site-packages/biom_format-2.1.5-py3.5-macosx-10.6-x86_64.egg/biom/cli/table_validator.py", line 496, in _valid_type
    if value.lower() not in self.TableTypes:
AttributeError: 'list' object has no attribute 'lower'

QIIME 2 uses BIOM under the hood, so if BIOM doesn’t like the file, then QIIME 2 definitely won’t. Unfortunately, according to the format field above, it looks like this file was generated using a developmental version of BIOM (1.0.0-dev). I would suggest asking on the BIOM support forum for help getting these data exported in a supported version of the format (either 1.0.0 or 2.1.0).

1 Like

Thanks. I’ve posted on the BIOM support forum, and on stackoverflow.

1 Like

Hi @thermokarst, an update on this issue: According to the BIOM people, the biomformat package doesn’t create the 1.0.0-dev file correctly. Something to do with using list types instead of str for entries like matrix_type.

I opened an issue on the biomformat support page but have yet to hear back.

2 Likes

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.