I want to include some of my cython code as a sage module. I followed
the directions for adding the .pyx file to the sage library at
http://www.sagemath.org/doc/developer/coding_in_other.html.
However, when I run "sage -b"  I get this:
----------------------------------------------------------
sage: Building and installing modified Sage library files.


Installing c_lib
scons: `install' is up to date.
Updating Cython code....
Building modified file sage/my_stuff/interpolators.pyx.
python `which cython` --embed-positions --incref-local-binop -I/home/
evlutte/opt/sage-3.2.3/devel/sage-main -o sage/my_stuff/
interpolators.c sage/my_stuff/interpolators.pyx
sage/my_stuff/interpolators.pyx --> /home/evlutte/opt/sage-3.2.3/
local//lib/python/site-packages//sage/my_stuff/interpolators.pyx
Time to execute 1 commands: 1.00808811188 seconds
Finished compiling Cython code (time = 1.51264286041 seconds)
running install
running build
running build_py
package init file 'sage/my_stuff/__init__.py' not found (or not a
regular file)
package init file 'sage/my_stuff/__init__.py' not found (or not a
regular file)
running build_ext
building 'sage.my_stuff.interpolators' extension
gcc -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-
prototypes -fPIC -I/home/evlutte/opt/sage-3.2.3/local//include -I/home/
evlutte/opt/sage-3.2.3/local//include/csage -I/home/evlutte/opt/
sage-3.2.3/devel//sage/sage/ext -I/home/evlutte/opt/sage-3.2.3/local/
include/python2.6 -c sage/my_stuff/interpolators.c -o build/temp.linux-
i686-2.6/sage/my_stuff/interpolators.o -w
sage/my_stuff/interpolators.c:139:31: error: numpy/arrayobject.h: No
such file or directory
sage/my_stuff/inte ...

and lots more error stuff

Below are the contents of "interpolators.pyx" Can anyone tell me what
I'm doing wrong?


include "../ext/interrupt.pxi"
include '../ext/cdefs.pxi'
include '../ext/stdsage.pxi'

import numpy as np
cimport numpy as np

from math import pi
cdef double TWOPI = 2*pi

class PSpline():
    def __init__(self,pts,shift = (0,0), int reverse = 0):
        self.pts  = pts
        self.shift = shift
        self.reverse = reverse
        cdef int N = len(pts)
        self.N = N

    def value(self,float t0):
        if self.reverse == 1:
            t0 = TWOPI-t0
        while t0 >= TWOPI:
            t0 -= TWOPI
        t1 = (t0 * self.N/(TWOPI))
        pt1 = self.pts[int(t1)]
        pt2 = self.pts[(int(t1) + 1)%self.N]
        return np.complex(self.shift[0] + pt1[0] + (pt2[0] - pt1[0])*
(t1-int(t1)),self.shift[1] + pt1[1] + (pt2[1] - pt1[1])*(t1-int(t1)))

    def derivative(self,float t):
        if self.reverse == 1:
            t0 = TWOPI-t0
        while t0 >= TWOPI:
            t0 -= TWOPI
        t1 = (t0 * self.N/(TWOPI))
        pt1 = self.pts[int(t1)]
        pt2 = self.pts[(int(t1) + 1)%self.N]
        return np.complex((pt2[0] - pt1[0])*self.N/(TWOPI),(pt2[1] -
pt1[1])*self.N/(TWOPI))
class CCSpline():
    def __init__(self,cps):
        cdef int N,i,k,B
        B = len(cps)
        N = len(cps[0])
        self.avec = np.zeros([B,N],dtype = np.complex128)
        self.bvec = np.zeros([B,N],dtype = np.complex128)
        self.cvec = np.zeros([B,N],dtype = np.complex128)
        self.dvec = np.zeros([B,N],dtype = np.complex128)
        for k in range(B):
            pts = cps[k]
            yvec = np.zeros(N,dtype = np.complex128)
            for i in xrange(N):
                yvec[i] = 3*(pts[(i-1)%N]-2*pts[i]+pts[(i+1)%N])
            bmat = np.zeros([N,N],dtype = np.complex128)
            for i in xrange(N):
                bmat[i,i] = 4
                bmat[(i-1)%N,i] = 1
                bmat[(i+1)%N,i] = 1
            bvec = (np.linalg.solve(bmat,yvec))

            cvec = np.zeros(N,dtype = np.complex128)
            for i in range(N):
                cvec[i] = pts[(i+1)%N] - pts[i] - 1./3.*bvec[(i+1)%N]
- 2./3. * bvec[i]
            dvec = pts
            avec = range(N)
            for i in range(N):
                avec[i] = 1./3.*(bvec[(i+1)%N] - bvec[i])
            self.avec[k] = avec
            self.bvec[k] = bvec
            self.cvec[k] = cvec
            self.dvec[k] = dvec
        self.N = N

    def value(self,t0,k=0):
        cdef float t = (t0/TWOPI*self.N)%self.N
        cdef int j = int(t)
        return self.avec[k,j]*(t-j)**3+self.bvec[k,j]*(t-j)
**2+self.cvec[k,j]*(t-j)+self.dvec[k,j]

    def derivative(self,t0,k=0):
        cdef float t = (t0/TWOPI*self.N)%self.N
        cdef int j = int(t)
        return 3*self.avec[k,j]*(t-j)**2+2*self.bvec[k,j]*(t-j)
+self.cvec[k,j]

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to