vnmabus / rdata

Reader of R datasets in .rda format, in Python
https://rdata.readthedocs.io
MIT License
40 stars 2 forks source link

rdata.conversion.convert(parsed) fails with ValueError #16

Closed rituparna-13 closed 2 years ago

rituparna-13 commented 2 years ago

I tried to use this python library as directed in the GitHub page with the following lines:

import rdata
parsed = rdata.parser.parse_file("input_data.RData")
converted = rdata.conversion.convert(parsed)

After the last step I am getting the following error:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 715, in convert
    return SimpleConverter(*args, **kwargs).convert(data)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 531, in convert
    return self._convert_next(data)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 560, in _convert_next
    value = convert_list(obj, self._convert_next)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 87, in convert_list
    return {tag: conversion_function(r_list.value[0]), **cdr}
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 603, in _convert_next
    value = convert_vector(obj, self._convert_next, attrs=attrs)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 191, in convert_vector
    value: Union[List[Any], StrMap] = [
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 192, in <listcomp>
    conversion_function(o) for o in r_vec.value
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 603, in _convert_next
    value = convert_vector(obj, self._convert_next, attrs=attrs)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 191, in convert_vector
    value: Union[List[Any], StrMap] = [
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 192, in <listcomp>
    conversion_function(o) for o in r_vec.value
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 603, in _convert_next
    value = convert_vector(obj, self._convert_next, attrs=attrs)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 191, in convert_vector
    value: Union[List[Any], StrMap] = [
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 192, in <listcomp>
    conversion_function(o) for o in r_vec.value
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 603, in _convert_next
    value = convert_vector(obj, self._convert_next, attrs=attrs)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 191, in convert_vector
    value: Union[List[Any], StrMap] = [
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 192, in <listcomp>
    conversion_function(o) for o in r_vec.value
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 603, in _convert_next
    value = convert_vector(obj, self._convert_next, attrs=attrs)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 191, in convert_vector
    value: Union[List[Any], StrMap] = [
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 192, in <listcomp>
    conversion_function(o) for o in r_vec.value
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 603, in _convert_next
    value = convert_vector(obj, self._convert_next, attrs=attrs)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 191, in convert_vector
    value: Union[List[Any], StrMap] = [
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 192, in <listcomp>
    conversion_function(o) for o in r_vec.value
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 603, in _convert_next
    value = convert_vector(obj, self._convert_next, attrs=attrs)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 191, in convert_vector
    value: Union[List[Any], StrMap] = [
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 192, in <listcomp>
    conversion_function(o) for o in r_vec.value
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 593, in _convert_next
    value = convert_array(obj, self._convert_next, attrs=attrs)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/rdata/conversion/_conversion.py", line 365, in convert_array
    value = xarray.DataArray(value, dims=dimension_names, coords=coords)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/xarray/core/dataarray.py", line 406, in __init__
    coords, dims = _infer_coords_and_dims(data.shape, coords, dims)
  File "/gpfs/home/rk18g/.conda/envs/pythonenv/lib/python3.9/site-packages/xarray/core/dataarray.py", line 154, in _infer_coords_and_dims
    raise ValueError(
ValueError: conflicting sizes for dimension 'dim_0': length 100 on the data but length 99 on coordinate 'dim_0'

The RData file type is a list with the first few lines as mentioned below from str(input_data) after loading it in R:

List of 1
 $ topology_1:List of 1
  ..$ sample_size_1:List of 20
  .. ..$ dataset_sampling_1 :List of 1
  .. .. ..$ noise_level_1:List of 1

Please let me know if there are any parameters that I need to provide. It would be really helpful if I can use this to analyze my RData.

vnmabus commented 2 years ago

Can you share the data (or a different data that reproduces the error)? It is difficult to debug it just from the backtrace.

vnmabus commented 2 years ago

@rituparna-13 Were you able to figure out what the problem was? Do you have the data available?

rituparna-13 commented 2 years ago

Hi @vnmabus, I apologise for not letting you know before. I was able to solve it on my own. I spend sometime to understand the rdata and was able to extract it. Thank you for your help.

Thanks, Ritu

vnmabus commented 2 years ago

May I ask what was the cause of the problem, and if there is anything that can be modified in rdata to prevent that in the future?