Nick wrote:
this is the new oop version, its pretty messy currently, and i do
understand it is a simple routine, but i'm using it as an exercise to
learn oop python...

You neglected to specify Python version.

first the (current) traceback:
 [:~/python]$  python oop_covariance.py b2ar_all_test b2ar_all_test
<Eigen.Eigen_vect instance at 0x7fa26c404ab8>
<Eigen.Eigen_vect instance at 0x7fa26c404ab8>
Traceback (most recent call last):
  File "oop_covariance.py", line 24, in <module>
    cov = set1.covariance(set2, Eigen_vect.dot)
  File "/home/nleioatts/python/Eigen.py", line 66, in covariance
    print self.vectors[i][i]
AttributeError: Eigen_vect instance has no attribute '__getitem__'

self.vectors[i] is apparently an Eigen_vect instance and you try to subscript it, but, as the message said, there is no __getitem__ method.

So add one.



and a quick explaination:  the file structures aare a 2d list of lists
of numbers corresponding to eginvectors and a list of numbers
corresponding to eigenvalues

#########################33##Here is the main body
#!/usr/bin/env python
import sys
import Eigen
from Eigen import *

if len(sys.argv) != 3:
    print " "
    print "The corrent usage is 'python covariance.py file1 file2'"
    print "where the _U.asc and _s.asc will be appended when needed"
    print " "
    exit(1)
file1 =  sys.argv[1]
file2 =  sys.argv[2]
set1 = Eigen_set(file1+"_U.asc", file1+"_s.asc")
set2 = Eigen_set(file2+"_U.asc", file2+"_s.asc")
cov = set1.covariance(set2, Eigen_vect.dot)
print cov


###############and here are the classes:

#!/usr/bin/env python
import sys
import math
from math import sqrt

class Eigen_vect:
    def __init__(self, e_val, e_vect):
        self.e_val  = e_val
        self.e_vect = e_vect
    def length(self):
        return len(self.e_vect)

You should really call this __len__ so len(Eigen_vect()) will work.

I presume you need something like
def __getitem__(self, i): return self.e_vect[i]

Before continuing, read the Language Reference / Data Model / Special method names to understand how to write classes to integrate into syntax.

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to