Skip to content

[DOC] cuSpatial Documentation Example Errors #460

Closed
@Nicholas-7

Description

Describe the bug
cuSpatial documentation has errors in some of the examples present. There are examples that relies on code that cannot be ran without errors in the most recent RAPIDS releases. I've began testing going back to 0.19 and there may have been some change to the API before that release. Not sure if these changes were intentional or if it was an uncaught bug.

Steps/Code to reproduce bug
Steps to reproduce the behavior:
1.Go to Rapids cuSpatial documentation website
2.Click on the cuspatial API Reference link
3.Run the content for the examples therein as illustrated below

Expected behavior
There will be several examples that will create an error. Many examples miss details that could aide in implementation. The code will be a few commits behind from the 21.10 repo.

Environment details (please complete the following information):

  • Environment location: Paperspace
  • Linux Distro/Architecture: Ubuntu 18.04 amd64
  • GPU Model/Driver: P5000
  • CUDA: 11.4
  • Method of cuDF & cuSpatial install:
docker pull rapidsai/rapidsai:21.10-cuda11.4-runtime-ubuntu18.04-py3.8
docker run --gpus all --rm -it -p 8888:8888 -p 8787:8787 -p 8786:8786 \
    rapidsai/rapidsai:21.10-cuda11.4-runtime-ubuntu18.04-py3.8

Additional context
Examples of Discrepancies:
Example # 1

import cuspatial
import cudf
import pandas 

try:
    import geopandas
except ModuleNotFoundError:
    os.system('conda install -c conda-forge -y geopandas')
    import geopandas

gpdf = geopandas.read_file('arbitrary.txt')
cugpdf = cuspatial.from_geopandas(gpdf)

Error thrown below:

---------------------------------------------------------------------------
CPLE_OpenFailedError                      Traceback (most recent call last)
fiona/_shim.pyx in fiona._shim.gdal_open_vector()

fiona/_err.pyx in fiona._err.exc_wrap_pointer()

CPLE_OpenFailedError: arbitrary.txt: No such file or directory

During handling of the above exception, another exception occurred:

DriverError                               Traceback (most recent call last)
<ipython-input-4-e03113524eea> in <module>
      9     import geopandas
     10 
---> 11 gpdf = geopandas.read_file('arbitrary.txt')
     12 cugpdf = cuspatial.from_geopandas(gpdf)

/opt/conda/envs/rapids/lib/python3.8/site-packages/geopandas/io/file.py in _read_file(filename, bbox, mask, rows, **kwargs)
    158 
    159     with fiona_env():
--> 160         with reader(path_or_bytes, **kwargs) as features:
    161 
    162             # In a future Fiona release the crs attribute of features will

/opt/conda/envs/rapids/lib/python3.8/site-packages/fiona/env.py in wrapper(*args, **kwargs)
    406     def wrapper(*args, **kwargs):
    407         if local._env:
--> 408             return f(*args, **kwargs)
    409         else:
    410             if isinstance(args[0], str):

/opt/conda/envs/rapids/lib/python3.8/site-packages/fiona/__init__.py in open(fp, mode, driver, schema, crs, encoding, layer, vfs, enabled_drivers, crs_wkt, **kwargs)
    254 
    255         if mode in ('a', 'r'):
--> 256             c = Collection(path, mode, driver=driver, encoding=encoding,
    257                            layer=layer, enabled_drivers=enabled_drivers, **kwargs)
    258         elif mode == 'w':

/opt/conda/envs/rapids/lib/python3.8/site-packages/fiona/collection.py in __init__(self, path, mode, driver, schema, crs, encoding, layer, vsi, archive, enabled_drivers, crs_wkt, ignore_fields, ignore_geometry, **kwargs)
    160             if self.mode == 'r':
    161                 self.session = Session()
--> 162                 self.session.start(self, **kwargs)
    163             elif self.mode in ('a', 'w'):
    164                 self.session = WritingSession()

fiona/ogrext.pyx in fiona.ogrext.Session.start()

fiona/_shim.pyx in fiona._shim.gdal_open_vector()

DriverError: arbitrary.txt: No such file or directory

Where I am not able to test without some sort of "arbitrary.txt' to determine success

Example # 2

import cuspatial
import cudf
import pandas 

try:
    import geopandas
except ModuleNotFoundError:
    os.system('conda install -c conda-forge -y geopandas')
    import geopandas
    
cugpdf = cuspatial.GeoDataFrame(gpdf)

Where gpdf will not have definition without the above code finishing successfully.

Error thrown below:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-15-94b435d43abf> in <module>
      9     import geopandas
     10 
---> 11 cugpdf = cuspatial.GeoDataFrame(gpdf)

NameError: name 'gpdf' is not defined

Example # 3

import cuspatial
import cudf
import pandas 

try:
    import geopandas
except ModuleNotFoundError:
    os.system('conda install -c conda-forge -y geopandas')
    import geopandas
    
cuseries.points

Where cuseries.points is not recognized as the code is written

Error thrown below:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-24-7975a968805a> in <module>
      9     import geopandas
     10 
---> 11 cuseries.points

NameError: name 'cuseries' is not defined

Example # 4

buffers = GeoArrowBuffers({
    "points_xy":
        [0, 0, 0, 1, 0, 2, 1, 0, 1, 1, 1, 2, 2, 0, 2, 1, 2, 2],
    "multipoints_xy":
        [0, 0, 0, 1, 0, 2, 1, 0, 1, 1, 1, 2, 2, 0, 2, 1, 2, 2],
    "multipoints_offsets":
        [0, 6, 12, 18],
    "lines_xy":
        [0, 0, 0, 1, 0, 2, 1, 0, 1, 1, 1, 2, 2, 0, 2, 1, 2, 2, 3, 0,
         3, 1, 3, 2, 4, 0, 4, 1, 4, 2],
    "lines_offsets":
        [0, 6, 12, 18, 24, 30],
    "mlines":
        [1, 3],
    "polygons_xy":
        [0, 0, 0, 1, 0, 2, 1, 0, 1, 1, 1, 2, 2, 0, 2, 1, 2, 2, 3, 0,
         3, 1, 3, 2, 4, 0, 4, 1, 4, 2],
    "polygons_polygons": [0, 1, 2],
    "polygons_rings": [0, 1, 2],
    "mpolygons": [1, 3],
})

Where I've added commas to original code to delineate however, 'GeoArrowBuffers' is still not recognized as the code is written in the example. Additional context could be valuable

Error thrown below:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-11-edf05c824215> in <module>
----> 1 buffers = GeoArrowBuffers({
      2     "points_xy":
      3         [0, 0, 0, 1, 0, 2, 1, 0, 1, 1, 1, 2, 2, 0, 2, 1, 2, 2],
      4     "multipoints_xy":
      5         [0, 0, 0, 1, 0, 2, 1, 0, 1, 1, 1, 2, 2, 0, 2, 1, 2, 2],

NameError: name 'GeoArrowBuffers' is not defined

Example # 5

import cuspatial
import cudf
import pandas 

try:
    import geopandas
except ModuleNotFoundError:
    os.system('conda install -c conda-forge -y geopandas')
    import geopandas
    
buffers2 = GeoArrowBuffers(buffers)

Where 'GeoArrowBuffers' is not recognized as the code is written in the example. Additional context could be valuable

Error thrown below:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-26-ab87ce1385de> in <module>
      9     import geopandas
     10 
---> 11 buffers2 = GeoArrowBuffers(buffers)

NameError: name 'GeoArrowBuffers' is not defined

Example # 6

objects, traj_offsets = cuspatial.derive_trajectories(...)
dists_and_speeds = cuspatial.trajectory_distances_and_speeds(
        len(traj_offsets)
        objects['object_id'],
        objects['x'],
        objects['y'],
        objects['timestamp']
    )
print(dists_and_speeds)

Where "objects['object_id']", is not recognized as the code is written in documentation

Error thrown below:

---------------------------------------------------------------------------
File "<ipython-input-31-00f2ed148b34>", line 4
    objects['object_id'],
    ^
SyntaxError: invalid syntax

Example # 7

objects, traj_offsets = trajectory.derive_trajectories(
        [0, 0, 1, 1],  # object_id
        [0, 1, 2, 3],  # x
        [0, 0, 1, 1],  # y
        [0, 10, 0, 10] # timestamp
    )
traj_bounding_boxes = cuspatial.trajectory_bounding_boxes(
        len(traj_offsets),
        objects['object_id'],
        objects['x'],
        objects['y']
    )
print(traj_bounding_boxes)

Where "trajectory", is not recognized as the code is written in documentation

Error thrown below:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-33-3811b1e0118c> in <module>
----> 1 objects, traj_offsets = trajectory.derive_trajectories(
      2         [0, 0, 1, 1],  # object_id
      3         [0, 1, 2, 3],  # x
      4         [0, 0, 1, 1],  # y
      5         [0, 10, 0, 10] # timestamp

NameError: name 'trajectory' is not defined

Desired outcome
Examples present in cuSpatial documentation should be ready to replicated and implemented with less effort. Examples should reflect the commits made to the repositories during each release cycle. cuSpatial functions and models work as expected.

Request impacts
Our cuSpatial documentation is public and requires accurate information - Low Priority

@harrism @taureandyernv for awareness

Metadata

Assignees

Labels

PythonRelated to Python codedocDocumentation

Type

No type

Projects

  • Status

    Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions