Python Forum
cs.collections error - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: cs.collections error (/thread-36860.html)



cs.collections error - DaveG - Apr-06-2022

Hi
I have this error from the python 2.7 code below. Can someone help please? Much appreciated.

Error:
Traceback (most recent call last): File "C:/Users/David/PycharmProjects/pythonProject2/venv/init_collapse.py", line 107, in <module> csp=cs.collections[0].get_paths()[2]# path IndexError: list index out of range
################################################## collapse bathymetry data
collapse_steps=2 # can be changed by USER
collapse_starttime=0.0 # in second; can be changed by USER
collapse_times=linspace(0,collapse_duration,collapse_steps)
cs=contour(kxx,kyy,-kelevation,[collapse_depth])
csp=cs.collections[0].get_paths()[2]# path
csv=csp.vertices # vertices
csv_x=csv[:,0]
csv_y=csv[:,1]
if (not plot_debugfig):
    close()



RE: cs.collections error - ndc85430 - Apr-06-2022

There error seems pretty self-explanatory: you're trying to access an element of a list that doesn't exist. There are two indices in that line, so the first question I'd ask is: which is it that's causing the problem?

Also, why are you using Python 2 in the first place?


RE: cs.collections error - DaveG - Apr-06-2022

This is a script written in the past by someone now lost and I am trying to debug it. I'm a user of the output and have no real programming skills (I'm working blind here). I tried to shift it over to Python3 but it was causing me more headaches.

Can you please describe the code I need to find out which indices is causing the problem.


RE: cs.collections error - ndc85430 - Apr-06-2022

Assign the parts that use the different indices to different variables. Those assignments will be on separate lines then and the error will point you to the line that's failing.

Then, work backwards from there - either print out your variables at different points to see whether they have the values you expect, or use a debugger like pdb in the standard library.

I don't know what your situation is, but perhaps learning some of the basics in a more structured way (rather than while trying to fix this broken program) would serve you well?


RE: cs.collections error - Larz60+ - Apr-06-2022

please supply full script (including imports, and any external data required).
The script will require upgrade to python 3 as python 2.7 was obsolete January 1, 2020.

In order to do so, need full script.


RE: cs.collections error - DaveG - Apr-06-2022

I agree I need to learn more but this is a rush to meet a thesis deadline.

It would help if I new what 'csp=cs.collections[0].get_paths()[2]' is trying to do. it seems to take the collected values from the variables 'cs' and interrogate this for something? Could you explain please?


RE: cs.collections error - DaveG - Apr-06-2022

This is the script up to the problem line. All the variables look good up to the error point. I'm assuming cs.collections is a function of Matplotlib, would it be that that function is missing from my environment?

from scipy import *
from pylab import *
from numpy import *
import sys
from degrees2utm import latlng2utm
from copy import deepcopy
from matplotlib.patches import PathPatch

#close('all')

# =================================================================================
#                       INPUT SECTION BEGIN
# =================================================================================

meshfile='Caldera_Before.xyz' # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
collapse_duration = 60.0 # in seconds
collapse_depth = -480    # depth of the filling cup

meshfile_start='Caldera_Output.xyz' # file with output
file_ls = "collapse.xyt" # file with displacement


# =================================================================================
#                       INPUT SECTION END
# =================================================================================
#utm_grid = True
print('reading mesh file data; might take some time')
data=genfromtxt(meshfile)

nx = 88 # dimensions of the mesh file
ny = 84

elevation=data[:, 2]
xx=data[:, 0]
yy=data[:, 1]

elevation=elevation.reshape((ny, nx)) # bathymetry/topography
xx=xx.reshape((ny, nx))
yy=yy.reshape((ny, nx))


cmax=500 # color scale
lmin=0 # cutting from east 
lmax=88 # cutting from west
rmin=0 # north of santorini
rmax=84 # south of santorini

###### kolumbo data
kxx=xx[rmin:rmax, lmin:lmax]
kyy=yy[rmin:rmax, lmin:lmax]
kelevation=elevation[rmin:rmax, lmin:lmax]

################################################## collapse bathymetry data
collapse_steps = 2 # can be changed by USER
collapse_starttime = 0.0 # in second; can be changed by USER
collapse_times = linspace(0, collapse_duration, collapse_steps)
cs = contour(kxx, kyy, -kelevation, [collapse_depth])
csp = cs.collections[0].get_paths()[2]  # path
csv = csp.vertices # vertices
csv_x = csv[:, 0]
csv_y = csv[:, 1]

if (not plot_debugfig):
    close()



RE: cs.collections error - Larz60+ - Apr-06-2022

This is a good example of why '*' should not be used when importing modules.

I'm pretty sure the countour from cs = contour(kxx, kyy, -kelevation, [collapse_depth])
refers to https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.contour.html