コード例 #1
0
    def setdata(self, X, V):
        A = self.bialtprodeye(2*self.F.J_coords)
        """Note: p, q <= min(n,m)"""

        self.data.Brand = 2*(random((A.shape[0],self.data.p))-0.5)
        self.data.Crand = 2*(random((A.shape[1],self.data.q))-0.5)
        self.data.B = zeros((A.shape[0],self.data.p), Float)
        self.data.C = zeros((A.shape[1],self.data.q), Float)
        self.data.D = zeros((self.data.q,self.data.p), Float)

        U, S, Vh = linalg.svd(A)
        self.data.b = U[:,-1:]
        self.data.c = num_transpose(Vh)[:,-1:]
        
        if self.update:
            self.data.B[:,1] = self.data.b
            self.data.C[:,1] = self.data.c
            
            U2, S2, Vh2 = linalg.svd(c_[r_[A, transpose(self.data.C[:,1])], r_[self.data.B[:,1], [[0]]]])
            self.data.B[:,2] = U2[0:A.shape[0],-1:]
            self.data.C[:,2] = num_transpose(Vh2)[0:A.shape[1],-1:]
            self.data.D[0,1] = U2[A.shape[0],-1]
            self.data.D[1,0] = num_transpose(Vh2)[A.shape[1],-1]
        else:
            self.data.B = self.data.Brand
            self.data.C = self.data.Crand
コード例 #2
0
ファイル: mystuffv2.py プロジェクト: rfinn/pythonCode
def binitbinsfix(binsleft, binsright, x, y):  #give bins for binning
    nbin = len(binsleft)
    xbin = N.zeros(len(binsleft), 'f')
    ybin = N.zeros(len(binsleft), 'f')
    ybinerr = N.zeros(len(binsleft), 'f')
    y = N.take(y, N.argsort(x))  #sort y according to x rankings
    x = N.take(x, N.argsort(x))

    j = -1
    for i in range(len(xbin)):
        xmin = binsleft[i]
        xmax = binsright[i]
        yb = []
        for j in range(len(x)):
            if x[j] > xmin:
                yb.append(y[j])
            if x[j] > xmax:
                yb = N.array(yb, 'f')
                xbin[i] = 0.5 * (xmin + xmax)
                try:
                    ybin[i] = pylab.median(yb)
                    ybinerr[i] = pylab.std(yb) / N.sqrt(1. * len(yb))
                except ZeroDivisionError:
                    print "warning: ZeroDivision error in binitbinsfix"
                    ybin[i] = 0.
                    ybinerr[i] = 0.

                break

    return xbin, ybin, ybinerr
コード例 #3
0
ファイル: mystuffv2.py プロジェクト: rfinn/pythonCode
def binitbins(xmin, xmax, nbin, x, y):  #use equally spaced bins
    dx = float((xmax - xmin) / (nbin))
    xbin = N.arange(xmin, (xmax), dx) + dx / 2.
    #print "within binitbins"
    #print "xbin = ",xbin
    #print "dx = ",dx
    #print "xmax = ",xmax
    #print "xmin = ",xmin
    ybin = N.zeros(len(xbin), 'd')
    ybinerr = N.zeros(len(xbin), 'd')
    xbinnumb = N.array(len(x), 'd')
    x1 = N.compress((x >= xmin) & (x <= xmax), x)
    y1 = N.compress((x >= xmin) & (x <= xmax), y)
    x = x1
    y = y1
    xbinnumb = ((x - xmin) * nbin / (xmax - xmin)
                )  #calculate x  bin number for each point
    j = -1
    for i in range(len(xbin)):
        ydata = N.compress(abs(xbinnumb - float(i)) < .5, y)
        try:
            ybin[i] = N.average(ydata)
            #ybin[i]=pylab.median(ydata)
            ybinerr[i] = pylab.std(ydata) / N.sqrt(float(len(ydata)))
        except ZeroDivisionError:
            ybin[i] = 0.
            ybinerr[i] = 0.
    return xbin, ybin, ybinerr
コード例 #4
0
ファイル: mystuffv2.py プロジェクト: rfinn/pythonCode
def horizontalhist(x, xmin, xmax, nbin):  #give bins for binning
    #nbin=len(bins)
    xbin = N.zeros(nbin, 'f')
    ybin = N.zeros(nbin, 'f')
    ybinerr = N.zeros(nbin, 'f')
    dbin = (xmax - xmin) / (1. * nbin)
    bins = N.arange(xmin, (xmax + dbin), dbin)
    x = N.take(x, N.argsort(x))
    xmin = min(bins)
    xmax = max(bins)
    xbinnumb = ((x - xmin) * nbin / (xmax - xmin)
                )  #calculate x  bin number for each point
    #print "from within horizontal hist"
    #print "bins = ",bins
    for i in range(len(xbin) - 1):
        xmin = bins[i]
        xmax = bins[i + 1]
        xbin[i] = xmin
        yb = 0.
        for j in range(len(x)):
            if (x[j] > xmin) & (x[j] <= xmax):
                yb = yb + 1.
        ybin[i] = yb
        ybinerr[i] = N.sqrt(yb)
        #print i,len(xbin),xbin[i],xmin,xmax,ybin[i],bins[i]
    xbin[(len(xbin) - 1)] = xbin[(len(xbin) - 2)] + dbin
    #xbin=bins
    #print "from w/in horizontal hist, ybin = ",ybin
    return xbin, ybin, ybinerr
コード例 #5
0
ファイル: mystuffv2.py プロジェクト: rfinn/pythonCode
def verticalhist(y, ymin, ymax, nbin):  #give bins for binning
    #nbin=len(bins)
    xbin = N.zeros(nbin, 'f')
    ybin = N.zeros(nbin, 'f')
    ybinerr = N.zeros(nbin, 'f')
    dbin = (ymax - ymin) / (1. * nbin)
    bins = N.arange(ymin, (ymax + dbin), dbin)
    y = N.take(y, N.argsort(y))
    xmin = min(bins)
    xmax = max(bins)
    xbinnumb = ((y - xmin) * nbin / (xmax - xmin)
                )  #calculate x  bin number for each point
    for i in range(len(xbin) - 1):
        xmin = bins[i]
        xmax = bins[i + 1]
        yb = 0.
        for j in range(len(y)):
            if y[j] > xmin:
                yb = yb + 1.
            if y[j] > xmax:
                ybin[i] = yb
                ybinerr[i] = N.sqrt(yb)
                #xbin[i]=0.5*(xmin+xmax)
                xbin[i] = xmax
                break
    drawhist(ybin, xbin)
コード例 #6
0
ファイル: mystuffv2.py プロジェクト: rfinn/pythonCode
def scipyhist2(bins, y):  #give bins for binning
    nbin = len(bins)
    xbin = N.zeros(len(bins), 'f')
    ybin = N.zeros(len(bins), 'f')
    ybinerr = N.zeros(len(bins), 'f')
    y = N.take(y, N.argsort(y))
    xmin = min(bins)
    xmax = max(bins)
    xbinnumb = ((y - xmin) * nbin / (xmax - xmin)
                )  #calculate x  bin number for each point
    for i in range(len(xbin) - 1):
        xmin = bins[i]
        xmax = bins[i + 1]
        yb = 0.
        for j in range(len(y)):
            if y[j] > xmin:
                yb = yb + 1.
            if y[j] > xmax:
                ybin[i] = yb
                ybinerr[i] = N.sqrt(yb)
                xbin[i] = 0.5 * (xmin + xmax)

                break

    return xbin, ybin, ybinerr
コード例 #7
0
def load_svd(sfile, ufile, vfile):
    """loads dense svd files as output by svdlibc"""
    n_s = int(sfile.readline())
    S = na.zeros((n_s, n_s), type="Float32") #store S as a column vector
    for i in range(n_s):
        S[i,i] = float(sfile.readline())
    assert sfile.readline() == ''
    
    rows, columns = [int(a) for a in ufile.readline().split()]
    U = na.zeros((rows, columns), type="Float32")
    row = 0
    for line in ufile:
        col = 0
        for n in line.split():
            U[row, col] = float(n)
            col += 1
        row += 1

    rows, columns = [int(a) for a in vfile.readline().split()]
    V = na.zeros((rows, columns), type="Float32")
    row = 0
    for line in vfile:
        col = 0
        for n in line.split():
            V[row, col] = float(n)
            col += 1
        row += 1

    return U, S, V
コード例 #8
0
ファイル: utils_plot.py プロジェクト: samesense/bio_tools
def histOutline(dataIn, binsIn=None):
    """
    Make a histogram that can be plotted with plot() so that
    the histogram just has the outline rather than bars as it
    usually does.
    """
    if (binsIn == None):
        (en, eb) = pylab.matplotlib.mlab.hist(dataIn, bins=50, normed=True)
        binsIn = eb
    else:
        (en, eb) = pylab.matplotlib.mlab.hist(dataIn, bins=binsIn)

    stepSize = binsIn[1] - binsIn[0]

    bins = numarray.zeros(len(eb)*2 + 2, type=numarray.Float)
    data = numarray.zeros(len(eb)*2 + 2, type=numarray.Float)
    for bb in range(len(binsIn)):
        bins[2*bb + 1] = binsIn[bb]
        bins[2*bb + 2] = binsIn[bb] + stepSize
        data[2*bb + 1] = en[bb]
        data[2*bb + 2] = en[bb]

    bins[0] = bins[1]
    bins[-1] = bins[-2]
    data[0] = 0
    data[-1] = 0

    return (bins, data)
コード例 #9
0
def buildSpearmanCorrelationMatrix(traits, sc):
    dim = (len(traits), sc)
    matrix = numarray.zeros(dim, MA.Float64)
    testMatrix = numarray.zeros(dim, MA.Float64)

    def customCmp(a, b):
        return cmp(a[1], b[1])
    
    for i in range(len(traits)):
        # copy strain data to a temporary list and turn it into
        # (strain, expression) pairs
        sd = traits[i].strainData
        tempList = []
        for key in sd.keys():
            tempList.append((key, sd[key]))

        # sort the temporary list by expression
        tempList.sort(customCmp)
        
        for j in range(len(tempList)):
            # k is the strain id minus 1
            # 1-based strain id -> 0-based column index
            k = int(tempList[j][0]) - 1

            # j is the rank of the particular strain
            matrix[i,k] = j

            testMatrix[i,k] = 1

    return matrix, testMatrix
コード例 #10
0
def gaussNodes(m, tol=10e-9):
    def legendre(t, m):
        p0 = 1.0
        p1 = t
        for k in range(1, m):
            p = ((2.0 * k + 1.0) * t * p1 - k * p0) / (1.0 + k)
            p0 = p1
            p1 = p
        dp = m * (p0 - t * p1) / (1.0 - t**2)
        return p, dp

    A = zeros((m), type=Float64)
    x = zeros((m), type=Float64)
    nRoots = (m + 1) / 2  # Number of non-neg. roots
    for i in range(nRoots):
        t = cos(pi * (i + 0.75) / (m + 0.5))  # Approx. root
        for j in range(30):
            p, dp = legendre(t, m)  # Newton-Raphson
            dt = -p / dp
            t = t + dt  # method
            if abs(dt) < tol:
                x[i] = t
                x[m - i - 1] = -t
                A[i] = 2.0 / (1.0 - t**2) / (dp**2)  # Eq.(6.25)
                A[m - i - 1] = A[i]
                break
    return x, A
コード例 #11
0
ファイル: threedimturbulence.py プロジェクト: bnikolic/oof
def GenLinSystem(poly):

    n=len(poly)
    N=n*(n-1) /2 
    rhs=numarray.zeros(N )
    a  = numarray.zeros( ( N,N) )
    c= 0

    for i in range(n):
        x = numarray.zeros(len(poly) )
        x[i]=1
        rhs[c]=(poly*x).sum()**2
        for J in range(0,n-1):
            for K in range(J+1,n):
                k = JKtoi(J,K,n)
                a[c,k] = (x[J] - x[K]) **2
        c+=1

    for i in range(n):
        for j in range (i+1,n) :
            x = numarray.zeros(n )
            x[i]=1
            x[j]=2
            rhs[c]=(poly*x).sum()**2
            for J in range(0,n-1):
                for K in range(J+1,n):
                    k = JKtoi(J,K,n)
                    a[c,k] = (x[J] - x[K]) **2
            c+=1
            if c >= N:
                break
        if c >= N:
            break
    return a, rhs
コード例 #12
0
 def numhess(self, x0, ind1=None, ind2=None):
     """Computes second derivative using 2nd order centered finite difference scheme.
     MAKE MORE EFFICIENT IN FUTURE (i.e. when an index is in both ind1 and ind2)
     
     Thus, for F: R^n ---> R^m, H is an (m,n1,n2) matrix, where n1, n2 are subsets of [1,...,n]
     """
     eps = 1e-3
     try:
         n1 = len(ind1)
     except:
         n1 = self.n
         ind1 = range(n1)
         
     try:
         n2 = len(ind2)
     except:
         n2 = self.n
         ind2 = range(n2)
     
     H = zeros((self.m,n1,n2), Float)
     for i in range(n1):
         ei = zeros(self.n, Float)
         ei[ind1[i]] = 1.0
         for j in range(n2):
             ej = zeros(self.n, Float)
             ej[ind2[j]] = 1.0
             if ind1[i] == ind2[j]:
                 H[:,i,j] = (-1*self.func(x0+2*eps*ei) + 16*self.func(x0+eps*ei) - 30*self.func(x0) + \
                     16*self.func(x0-eps*ei) - self.func(x0-2*eps*ei))/(12*eps*eps)
             else:
                 H[:,i,j] = (self.func(x0+eps*(ei+ej)) - self.func(x0+eps*(ei-ej)) - \
                     self.func(x0+eps*(ej-ei)) + self.func(x0-eps*(ei+ej)))/(4*eps*eps)
     return H
コード例 #13
0
ファイル: misc.py プロジェクト: pylhc/Python_Classes4MAD
def hess(func, x0, ind):
    """Computes second derivative using 2nd order centered finite difference scheme."""
    eps = 1e-3
    n = len(x0)
    m = len(ind)
    H = zeros((func.m, m, m), Float)
    for i in range(m):
        ei = zeros(n, Float)
        ei[ind[i]] = 1.0
        for j in range(i, m):
            ej = zeros(n, Float)
            ej[ind[j]] = 1.0
            if i == j:
                H[:, i,
                  j] = (-1 * func(x0 + 2 * eps * ei) + 16 * func(x0 + eps * ei)
                        - 30 * func(x0) + 16 * func(x0 - eps * ei) -
                        func(x0 - 2 * eps * ei)) / (12 * eps * eps)
            else:
                H[:, i,
                  j] = H[:, j,
                         i] = (func(x0 + eps * (ei + ej)) -
                               func(x0 + eps * (ei - ej)) - func(x0 + eps *
                                                                 (ej - ei)) +
                               func(x0 - eps * (ei + ej))) / (4 * eps * eps)
    return H
コード例 #14
0
 def run_kut5(F, x, y, h):
     # Runge-Kutta-Fehlberg formulas
     C = array([37.0 / 378, 0.0, 250.0 / 621, 125.0 / 594, 0.0, 512.0 / 1771])
     D = array([2825.0 / 27648, 0.0, 18575.0 / 48384, 13525.0 / 55296, 277.0 / 14336, 1.0 / 4])
     n = len(y)
     K = zeros((6, n), type=Float64)
     K[0] = h * F(x, y)
     K[1] = h * F(x + 1.0 / 5 * h, y + 1.0 / 5 * K[0])
     K[2] = h * F(x + 3.0 / 10 * h, y + 3.0 / 40 * K[0] + 9.0 / 40 * K[1])
     K[3] = h * F(x + 3.0 / 5 * h, y + 3.0 / 10 * K[0] - 9.0 / 10 * K[1] + 6.0 / 5 * K[2])
     K[4] = h * F(x + h, y - 11.0 / 54 * K[0] + 5.0 / 2 * K[1] - 70.0 / 27 * K[2] + 35.0 / 27 * K[3])
     K[5] = h * F(
         x + 7.0 / 8 * h,
         y
         + 1631.0 / 55296 * K[0]
         + 175.0 / 512 * K[1]
         + 575.0 / 13824 * K[2]
         + 44275.0 / 110592 * K[3]
         + 253.0 / 4096 * K[4],
     )
     # Initialize arrays {dy} and {E}
     E = zeros((n), type=Float64)
     dy = zeros((n), type=Float64)
     # Compute solution increment {dy} and per-step error {E}
     for i in range(6):
         dy = dy + C[i] * K[i]
         E = E + (C[i] - D[i]) * K[i]
     # Compute RMS error e
     e = sqrt(sum(E ** 2) / n)
     return dy, e
コード例 #15
0
def invwedge(q, n):
	ind = argmax(abs(q),0)[0]
	q = q/q[ind]
	
	i, j = indtoij(ind)
	
	v1 = zeros((n,1), Float)
	v2 = zeros((n,1), Float)
	
	v1[i,0] = 0
	v2[j,0] = 0
	v1[j,0] = 1
	v2[i,0] = 1
	for k in range(0,i):
		if k != j:
			v1[k,0] = q[ijtoind(i, k),0]
	for k in range(i+1,n):
		v1[k,0] = -1*q[ijtoind(k, i),0]
	
	for k in range(0,j):
		v2[k,0] = -1*q[ijtoind(j, k),0]
	for k in range(j+1,n):
		if k != i:
			v2[k,0] = q[ijtoind(k, j),0]
	
	return v1, v2
コード例 #16
0
ファイル: query_lsi.py プロジェクト: thor509/personal_code
def load_svd(sfile, ufile, vfile):
    """loads dense svd files as output by svdlibc"""
    n_s = int(sfile.readline())
    S = na.zeros((n_s, n_s), type="Float32")  #store S as a column vector
    for i in range(n_s):
        S[i, i] = float(sfile.readline())
    assert sfile.readline() == ''

    rows, columns = [int(a) for a in ufile.readline().split()]
    U = na.zeros((rows, columns), type="Float32")
    row = 0
    for line in ufile:
        col = 0
        for n in line.split():
            U[row, col] = float(n)
            col += 1
        row += 1

    rows, columns = [int(a) for a in vfile.readline().split()]
    V = na.zeros((rows, columns), type="Float32")
    row = 0
    for line in vfile:
        col = 0
        for n in line.split():
            V[row, col] = float(n)
            col += 1
        row += 1

    return U, S, V
コード例 #17
0
def hist(binsIn, dataIn, normed=False):
    """
    Make a histogram that can be plotted with plot() so that
    the histogram just has the outline rather than bars as it
    usually does.

    Example Usage:
    binsIn = numarray.arange(0, 1, 0.1)
    angle = pylab.rand(50)

    (bins, data) = histOutline(binsIn, angle)
    plot(bins, data, 'k-', linewidth=2)

    """
    (en, eb) = matplotlib.mlab.hist(dataIn, bins=binsIn, normed=normed)

    stepSize = binsIn[1] - binsIn[0]

    bins = na.zeros(len(eb) * 2 + 2, type=na.Float)
    data = na.zeros(len(eb) * 2 + 2, type=na.Float)
    for bb in range(len(binsIn)):
        bins[2 * bb + 1] = binsIn[bb]
        bins[2 * bb + 2] = binsIn[bb] + stepSize
        data[2 * bb + 1] = en[bb]
        data[2 * bb + 2] = en[bb]

    bins[0] = bins[1]
    bins[-1] = bins[-2]
    data[0] = 0
    data[-1] = 0

    return (bins, data)
コード例 #18
0
ファイル: SoundInfo.py プロジェクト: guaka/py-audio-analysis
def calculate_spectrogram(input_array,
						  framesize,
						  hopsize,
						  window_function = numarray.linear_algebra.mlab.hanning,
						  keep_bands_until = 0,
						  axis = 0):
	"""Calculate the spectrogram."""

	do_fft = lambda arr: abs(numarray.fft.real_fft(arr, axis = axis))[:keep_bands_until]
	
	keep_bands_until = keep_bands_until or int(framesize / 2)
	input_shape = map(None, numarray.shape(input_array))

	window = window_function(framesize)
	if len(input_shape) > 1:
		window = transpose(array([list(window)] * input_shape[1]))
		
	# print "input_shape:", shape(input_array)
	zeros_shape = input_shape  # this allows for both 1 and 2 dim inputs
	zeros_shape[0] = framesize / 2
	input_array_plus_zeros = numarray.concatenate((numarray.zeros(zeros_shape), input_array, numarray.zeros(zeros_shape)))
	fft_range = range(0, len(input_array) - framesize, hopsize)

	fft_array = numarray.zeros(([len(fft_range)] + 
								map(None, numarray.shape(do_fft(window)))),
							   # do_fft(window) is used here because it gives the right shape
							   numarray.Float32) * 1.0  # this *1.0 is necessary!
	for result_counter, input_counter in enumerate(fft_range):
		frame = window * input_array_plus_zeros[input_counter : input_counter + framesize]
		fft_array[result_counter] = 10 * numarray.log10(0.1 + do_fft(frame))

	return fft_array
コード例 #19
0
ファイル: LinearAlgebra2.py プロジェクト: joshfermin/AI
def determinant(a):
    """determinant(a) -> ||a||
 
    *a* may be either rank-2 or rank-3. If it is rank-2, it must square. 
    
    >>> A = [[1,2,3], [3,4,5], [5,6,7]]
    >>> _isClose(determinant(A), 0)
    1
    
    If *a* is rank-3, it is treated as an array of rank-2 matrices and
    must be square along the last 2 axes.
 
    >>> A = [[[1, 3], [2j, 3j]], [[2, 4], [4j, 4j]], [[3, 5], [6j, 5j]]]
    >>> _isClose(determinant(A), [-3j, -8j, -15j])
    1

    If *a* is not square along its last two axes, a LinAlgError is raised.
    
    >>> determinant(na.asarray(A)[...,:1])
    Traceback (most recent call last):
       ...
    LinearAlgebraError: Array (or it submatrices) must be square
    
    """
    a = na.asarray(a)
    _assertRank((2,3), a)
    _assertSubmatrixSquareness(a)
    stretched = (len(a.shape) == 2)
    if stretched:
        a = a[na.NewAxis,]
    t = _commonType(a)
    a = _castCopyAndTranspose(t, a, indices=(0,2,1))
    n_cases, n = a.shape[:2]
    if _array_kind[t] == 1:
        lapack_routine = lapack_lite2.zgetrf
    else:
        lapack_routine = lapack_lite2.dgetrf
    no_pivoting = na.arrayrange(1, n+1)
    pivots = na.zeros((n,), 'l')
    all_pivots = na.zeros((n_cases, n,), 'l')
    sum , not_equal = na.sum, na.not_equal
    stride = n * n * a.itemsize()
    pivots_stride = n * pivots.itemsize()
    view = a[0].view()
    view_pivots = all_pivots[0]
    a_i = view.copy()
    for i in range(n_cases):
        if i:
            a_i._copyFrom(view)
        outcome = lapack_routine(n, n, a_i, n, pivots, 0)
        view_pivots._copyFrom(pivots)
        view._copyFrom(a_i)
        view._byteoffset += stride
        view_pivots._byteoffset += pivots_stride
    signs = na.where(sum(not_equal(all_pivots, no_pivoting), 1) % 2, -1, 1).astype(t)
    for i in range(n):
        signs *= a[:,i,i]
    if stretched:
        signs = signs[0]
    return signs
コード例 #20
0
ファイル: run_kut5.py プロジェクト: 20978987/wb_372
    def run_kut5(F, x, y, h):
        # Runge-Kutta-Fehlberg formulas
        C = array([37./378, 0., 250./621, 125./594,          \
                   0., 512./1771])
        D = array([2825./27648, 0., 18575./48384,            \
                   13525./55296, 277./14336, 1./4])
        n = len(y)
        K = zeros((6, n), type=Float64)
        K[0] = h * F(x, y)
        K[1] = h * F(x + 1. / 5 * h, y + 1. / 5 * K[0])
        K[2] = h * F(x + 3. / 10 * h, y + 3. / 40 * K[0] + 9. / 40 * K[1])
        K[3] = h*F(x + 3./5*h, y + 3./10*K[0]- 9./10*K[1]    \
               + 6./5*K[2])
        K[4] = h*F(x + h, y - 11./54*K[0] + 5./2*K[1]        \
               - 70./27*K[2] + 35./27*K[3])
        K[5] = h*F(x + 7./8*h, y + 1631./55296*K[0]          \
               + 175./512*K[1] + 575./13824*K[2]             \
               + 44275./110592*K[3] + 253./4096*K[4])
        # Initialize arrays {dy} and {E}
        E = zeros((n), type=Float64)
        dy = zeros((n), type=Float64)
        # Compute solution increment {dy} and per-step error {E}
        for i in range(6):
            dy = dy + C[i] * K[i]
            E = E + (C[i] - D[i]) * K[i]

    # Compute RMS error e
        e = sqrt(sum(E**2) / n)
        return dy, e
コード例 #21
0
ファイル: misc.py プロジェクト: pylhc/Python_Classes4MAD
def invwedge(q, n):
    ind = argmax(abs(q), 0)[0]
    q = q / q[ind]

    i, j = indtoij(ind)

    v1 = zeros((n, 1), Float)
    v2 = zeros((n, 1), Float)

    v1[i, 0] = 0
    v2[j, 0] = 0
    v1[j, 0] = 1
    v2[i, 0] = 1
    for k in range(0, i):
        if k != j:
            v1[k, 0] = q[ijtoind(i, k), 0]
    for k in range(i + 1, n):
        v1[k, 0] = -1 * q[ijtoind(k, i), 0]

    for k in range(0, j):
        v2[k, 0] = -1 * q[ijtoind(j, k), 0]
    for k in range(j + 1, n):
        if k != i:
            v2[k, 0] = q[ijtoind(k, j), 0]

    return v1, v2
コード例 #22
0
    def cluster_vectorspace(self, vectors, trace=False):
        assert len(vectors) > 0

        # set the parameters to initial values
        dimensions = len(vectors[0])
        means = self._means
        priors = self._priors
        if not priors:
            priors = self._priors = numarray.ones(self._num_clusters,
                                        numarray.Float64) / self._num_clusters
        covariances = self._covariance_matrices 
        if not covariances:
            covariances = self._covariance_matrices = \
                [ numarray.identity(dimensions, numarray.Float64) 
                  for i in range(self._num_clusters) ]
            
        # do the E and M steps until the likelihood plateaus
        lastl = self._loglikelihood(vectors, priors, means, covariances)
        converged = False

        while not converged:
            if trace: print 'iteration; loglikelihood', lastl
            # E-step, calculate hidden variables, h[i,j]
            h = numarray.zeros((len(vectors), self._num_clusters),
                numarray.Float64)
            for i in range(len(vectors)):
                for j in range(self._num_clusters):
                    h[i,j] = priors[j] * self._gaussian(means[j],
                                               covariances[j], vectors[i])
                h[i,:] /= sum(h[i,:])

            # M-step, update parameters - cvm, p, mean
            for j in range(self._num_clusters):
                covariance_before = covariances[j]
                new_covariance = numarray.zeros((dimensions, dimensions),
                            numarray.Float64)
                new_mean = numarray.zeros(dimensions, numarray.Float64)
                sum_hj = 0.0
                for i in range(len(vectors)):
                    delta = vectors[i] - means[j]
                    new_covariance += h[i,j] * \
                        numarray.multiply.outer(delta, delta)
                    sum_hj += h[i,j]
                    new_mean += h[i,j] * vectors[i]
                covariances[j] = new_covariance / sum_hj
                means[j] = new_mean / sum_hj
                priors[j] = sum_hj / len(vectors)

                # bias term to stop covariance matrix being singular
                covariances[j] += self._bias * \
                    numarray.identity(dimensions, numarray.Float64)

            # calculate likelihood - FIXME: may be broken
            l = self._loglikelihood(vectors, priors, means, covariances)

            # check for convergence
            if abs(lastl - l) < self._conv_threshold:
                converged = True
            lastl = l
コード例 #23
0
 def getVW(self, A):
     # V --> m, W --> n
     #print self.data
     MLU = linalg.lu_factor(c_[r_[A,transpose(self.data.C)], r_[self.data.B,self.data.D]])
     V = linalg.lu_solve(MLU,r_[zeros((self.data.n,self.data.q), Float), eye(self.data.q)])
     W = linalg.lu_solve(MLU,r_[zeros((self.data.m,self.data.p), Float), eye(self.data.p)],trans=1)
     
     return V, W
コード例 #24
0
def read_sdd(fin):
    """Read an SDD output file into memory

    The SDD output file starts with 2 comment lines, followed by a line whose
    contents are C{k n m}. C{k} is the user's selected value for truncation
    of the matrices. C{n} is the number of rows in the original matrix, and
    C{m} is the number of columns in the original matrix.

    Following this line are C{k} values which represent B{D}, a diagonal matrix.
    The next n*k values are in the set C{{-1, 0, 1}}, and represent the X
    matrix. Following this, logically, are m*k values representng the Y matrix.
    If you're confused, read the code; it's pretty simple. (although not
    documented anywhere, grumble, grumble)

    The odd C{if buf} statements in the read loops are necessary because
    SDDPACK seems not to write any lines longer than 96 characters. Thus, each
    row may or may not be on the same line.

    @param fin: open sdd file
    @type fin: File

    @returns Tuple (X, D, Y), the three SDD matrices
    """
    for i in range(2): fin.readline() #ignore comments at top of sdd file
    k, n, m = fin.readline().split()
    k = int(k)
    n = int(n)
    m = int(m)

    D = na.zeros((k,k), type="Float32")
    print "reading D matrix from SDD file"
    for i in range(int(k)):
        D[i,i] = float(fin.readline())

    X = na.zeros((n, k), type="Int8")   #the values are in {-1, 0, 1}
    buf = fin.readline().split()
    print "reading X matrix from SDD file"
    for i in xrange(k):
        for j in xrange(n):
            if buf:
                X[j,i] = int(buf.pop(0))  #do I want j, i reversed? (think so)
            else:
                buf = fin.readline().split()
                X[j,i] = int(buf.pop(0))
    assert buf == []  #verify we don't have data left over

    Y = na.zeros((m, k), type="Int8")   #vals in {-1, 0, 1} still
    buf = fin.readline().split()
    print "reading Y matrix from SDD file"
    for i in xrange(k):
        for j in xrange(m):
            if buf:
                Y[j,i] = int(buf.pop(0))
            else:
                buf = fin.readline().split()
                Y[j,i] = int(buf.pop(0))
    assert fin.readline() == '' and buf == [] #verify we done got everything
    return (X, D, Y)
コード例 #25
0
ファイル: optimize.py プロジェクト: anorth/runswift-2005
def approx_fprime(xk, f, *args):
    f0 = apply(f, (xk, ) + args)
    grad = Num.zeros((len(xk), ), 'd')
    ei = Num.zeros((len(xk), ), 'd')
    for k in range(len(xk)):
        ei[k] = 1.0
        grad[k] = (apply(f, (xk + epsilon * ei, ) + args) - f0) / epsilon
        ei[k] = 0.0
    return grad
コード例 #26
0
 def getnearestgen(self,ra1,dec1,ra2,dec2,j):#measure distances from ra1, dec1 to members in catalog ra2, dec2
     sig5=N.zeros(len(ra1),'f')
     sig10=N.zeros(len(ra1),'f')
     for i in range(len(ra1)):
         angdist=my.DA(c.z[j],h100)#kpc/arcsec
         dspec=N.sqrt((ra1[i]-ra2)**2+(dec1[i]-dec2)**2)#sorted array of distances in degrees
         dspecsort=N.take(dspec,N.argsort(dspec))
         sig5[i]=5./(N.pi)/(dspecsort[5]*3600.*angdist/1000.)**2#convert from deg to arcsec, multiply by DA (kpc/arcsec), divide by 1000 to convert to Mpc, index 5 element b/c 0 is itself
         sig10[i]=10./(N.pi)/(dspecsort[10]*3600.*angdist/1000.)**2#convert from deg to arcsec, multiply by DA (kpc/arcsec), divide by 1000 to convert to Mpc, index 5 element b/c 0 is itself
     return sig5, sig10
コード例 #27
0
ファイル: plotsmooth.py プロジェクト: certik/chemev
def isovalues(isos,isow):
    x = numarray.zeros(len(isos))*0.  # age
    y = numarray.zeros(len(isos))*0.  # metallicity
    z = numarray.zeros(len(isos))*0.  # metallicity
    for i in range(len(isos)):
        feh,age = iso.scaled2real(isos[i][0],isos[i][1])
        y[i] = feh
        x[i] = numarray.log10(age)
        z[i] = isow[i] 
    return x,y,z
コード例 #28
0
 def Kcorr(self):#calculate K_u(z) (Blanton et al 2003) for each cluster
     self.kcorr=N.zeros(len(self.z),'f')
     self.dL=N.zeros(len(self.z),'f')
     z=N.arange(0.,1.2,.1)
     #kc=N.array([0.,0.,.05,.05,.1,.15,.2,.225,.25,.3,.35,.35],'f')#Ku(z)
     kc=N.array([0.,0.,.025,.05,.07,.1,.14,.16,.2,.25,.25,.3],'f')#Kg(z)
     r=self.z/.01
     for i in range(len(self.z)):
         self.kcorr[i]=kc[int(r[i])]+(r[i]-int(r[i]))*(kc[int(r[i]+1)]-kc[int(r[i])])
         self.dL[i] = my.dL(self.z[i],h100)
コード例 #29
0
def isovalues(isos, isow):
    x = numarray.zeros(len(isos)) * 0.  # age
    y = numarray.zeros(len(isos)) * 0.  # metallicity
    z = numarray.zeros(len(isos)) * 0.  # metallicity
    for i in range(len(isos)):
        feh, age = iso.scaled2real(isos[i][0], isos[i][1])
        y[i] = feh
        x[i] = numarray.log10(age)
        z[i] = isow[i]
    return x, y, z
コード例 #30
0
ファイル: ediscslocal.py プロジェクト: rfinn/pythonCode
 def readsdsscompleteness(self):
     self.nspec05 = N.zeros(len(self.z), 'f')
     self.nphot05 = N.zeros(len(self.z), 'f')
     self.compl05 = N.zeros(len(self.z), 'f')
     self.nspec1 = N.zeros(len(self.z), 'f')
     self.nphot1 = N.zeros(len(self.z), 'f')
     self.compl1 = N.zeros(len(self.z), 'f')
     self.nspec2 = N.zeros(len(self.z), 'f')
     self.nphot2 = N.zeros(len(self.z), 'f')
     self.compl2 = N.zeros(len(self.z), 'f')
     complout = open('sdsscompleteness.dat', 'r')
     i = 0
     for line in complout:
         f = line.split()
         #print line
         #print f
         j = 0
         for j in range(len(f)):
             f[j] = float(f[j])
         print f
         (self.nspec05[i], self.nphot05[i], self.compl05[i], self.nspec1[i],
          self.nphot1[i], self.compl1[i], self.nspec2[i], self.nphot2[i],
          self.compl2[i]) = (f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7],
                             f[8])
         #print f[0],f[1],f[2],self.nspec05[i],self.nphot05[i],self.compl05[i]
         #print line
         i = i + 1
     complout.close()
     print "got ", i, " clusters from sdsscompleteness.dat"
     print "min of c.compl05 = ", min(self.compl05)
コード例 #31
0
def sample(snx,sny,plist,background):
	#i think that this one just does a little 3 by 3 box	
	import numarray	
	#print "sample" , snx , " " , sny	
	pixellist = numarray.zeros((3,3),type = numarray.Float32) 
	pixels = numarray.zeros((3,3),type = numarray.Float32) 
	#print pixellist	
	cx = round(snx)
	cy = round(sny)
	for xcor in [cx - 1.0 , cx , cx + 1.0]:
		for ycor in [cy - 1.0 , cy , cy + 1.0]:
			#print xcor, cx, ycor, cy, xcor-cx+2, ycor-cy+2
			x = int(xcor-cx+1)
			y = int(ycor-cy+1)	
			#print x ,y 
			#reverse x and y because of image
			pixellist[x][y] = plist[int(ycor)-1][int(xcor)-1]
	#print pixellist	
	#shift to a 3 x 3 grid	
	snx = snx - cx + 1
	sny = sny - cy + 1
	xmin = snx - 0.5
        ymin = sny - 0.5
        xmax = snx + 0.5
        ymax = sny + 0.5
        scale  = 1.00 
       	#figure out which pixels to measure
	tally = 0
	counts = 0	
	vcounts = 0
	for pixelx in range(3):
		for pixely in range(3):
        	        pymin = pixely - scale / 2.0
        	        pymax = pixely + scale / 2.0
        	        pxmin = pixelx - scale / 2.0
        	        pxmax = pixelx + scale / 2.0
        	        compx = overlap(pxmin,pxmax,xmin,xmax)
        	        compy = overlap(pymin,pymax,ymin,ymax)
        	        coeff = compx * compy
        	        #pixels[pixelx][pixely]
        	        #print coeff, tally	
        	        counts = counts + coeff * pixellist[pixelx][pixely]
        	       	vcounts = vcounts + pixellist[pixelx][pixely] 
			tally = tally + coeff
	vavcounts = vcounts / 9.0
	sum = 0
       	for pixelx in range(3):         
        	for pixely in range(3):
			sum = sum + pow((pixellist[pixelx][pixely]-vavcounts),2)
	rms = pow(sum/9.0,0.5)
	#rescale the pixels to account for the difference in pixel scale
        #print counts
        #counts = counts  * pow(scale )
        print "coeff adds up to " , tally
	return [counts,rms]
コード例 #32
0
ファイル: mad_combine.py プロジェクト: bamford/astrobamf
def _mad3(data):
    # adapted from NR function moment
    n = len(data[:,0,0])
    s = num.zeros(data[0,:,:].shape, num.Float32)
    # First pass to get the mean.
    for j in range(n): s += data[j,:,:]
    ave = s/n
    adev = num.zeros(s.shape, num.Float32)
    for j in range(n):
        num.add(adev, num.fabs(data[j] - ave), adev)
    return adev / n
コード例 #33
0
def hess3(func, x0, ind):
	"""Computes third derivative using hess function."""
	eps = sqrt(1e-3)
	n = len(x0)
	m = len(ind)
	C = zeros((func.m,m,m,m), Float)
	for i in range(m):
		ei = zeros(n, Float)
		ei[ind[i]] = 1.0
		C[i,:,:,:] = (hess(func,x0+eps*ei,ind) - hess(func,x0-eps*ei,ind))/(2*eps)
	return C
コード例 #34
0
    def testInit(self):
        a = self.a
        b = self.b
        assert(a.g == 0.0 and \
               na.allclose(a.h, na.zeros(3)) and \
               na.allclose(a.K, na.zeros(shape=(3,3)))), \
               " Error with standard initialization "

        assert(b.g == 2.0 and \
               na.allclose(b.h, na.array([1,2,3], type='Float32')) and \
               na.allclose(b.K, na.arange(9,shape=(3,3), type='Float32'))), \
               " Error with standard initialization with parameter setting"    
コード例 #35
0
def plotFitRms(root, polyroot, gcfitdir):
    s = starset.StarSet(root)
    s.loadPolyfit(polyroot, arcsec=1, accel=0)

    years = s.stars[0].years
    fitPx = s.getArray('fitXv.p')
    fitVx = s.getArray('fitXv.v')
    fitPy = s.getArray('fitYv.p')
    fitVy = s.getArray('fitYv.v')
    t0x = s.getArray('fitXv.t0')
    t0y = s.getArray('fitYv.t0')

    rmsX = na.zeros(len(s.stars), type=na.Float)
    rmsY = na.zeros(len(s.stars), type=na.Float)
    rms = na.zeros(len(s.stars), type=na.Float)
    cnt = na.zeros(len(s.stars), type=na.Int)

    for ee in range(len(years)):
        dtX = years[ee] - t0x
        dtY = years[ee] - t0y

        xfit = fitPx + (dtX * fitVx)
        yfit = fitPy + (dtY * fitVy)

        x = s.getArrayFromEpoch(ee, 'x')
        y = s.getArrayFromEpoch(ee, 'y')
        xpix = s.getArrayFromEpoch(ee, 'xpix')
        ypix = s.getArrayFromEpoch(ee, 'ypix')

        diffx = xfit - x
        diffy = yfit - y
        diff = na.sqrt(diffx**2 + diffy**2)

        idx = (na.where(xpix > -999))[0]

        rmsX[idx] += diffx**2
        rmsY[idx] += diffy**2
        rms[idx] += diff**2
        cnt[idx] += 1

    rmsX = na.sqrt(rmsX / cnt) * 1000.0
    rmsY = na.sqrt(rmsY / cnt) * 1000.0
    rms = na.sqrt(rms / cnt) * 1000.0

    mag = s.getArray('mag')
    x = s.getArray('x')
    y = s.getArray('y')
    r = na.sqrt(x**2 + y**2)

    idx = (na.where(mag < 15))[0]

    p.clf()
    p.semilogy(r[idx], rms[idx], 'k.')
コード例 #36
0
ファイル: misc.py プロジェクト: pylhc/Python_Classes4MAD
def hess3(func, x0, ind):
    """Computes third derivative using hess function."""
    eps = sqrt(1e-3)
    n = len(x0)
    m = len(ind)
    C = zeros((func.m, m, m, m), Float)
    for i in range(m):
        ei = zeros(n, Float)
        ei[ind[i]] = 1.0
        C[i, :, :, :] = (hess(func, x0 + eps * ei, ind) -
                         hess(func, x0 - eps * ei, ind)) / (2 * eps)
    return C
コード例 #37
0
def plotFitRms(root, polyroot, gcfitdir):
    s = starset.StarSet(root)
    s.loadPolyfit(polyroot, arcsec=1, accel=0)

    years = s.stars[0].years
    fitPx = s.getArray('fitXv.p')
    fitVx = s.getArray('fitXv.v')
    fitPy = s.getArray('fitYv.p')
    fitVy = s.getArray('fitYv.v')
    t0x = s.getArray('fitXv.t0')
    t0y = s.getArray('fitYv.t0')

    rmsX = na.zeros(len(s.stars), type=na.Float)
    rmsY = na.zeros(len(s.stars), type=na.Float)
    rms = na.zeros(len(s.stars), type=na.Float)
    cnt = na.zeros(len(s.stars), type=na.Int)

    for ee in range(len(years)):
        dtX = years[ee] - t0x
        dtY = years[ee] - t0y

        xfit = fitPx + (dtX * fitVx)
        yfit = fitPy + (dtY * fitVy)

        x = s.getArrayFromEpoch(ee, 'x')
        y = s.getArrayFromEpoch(ee, 'y')
        xpix = s.getArrayFromEpoch(ee, 'xpix')
        ypix = s.getArrayFromEpoch(ee, 'ypix')

        diffx = xfit - x
        diffy = yfit - y
        diff = na.sqrt(diffx**2 + diffy**2)

        idx = (na.where(xpix > -999))[0]

        rmsX[idx] += diffx**2
        rmsY[idx] += diffy**2
        rms[idx] += diff**2
        cnt[idx] += 1

    rmsX = na.sqrt(rmsX / cnt) * 1000.0
    rmsY = na.sqrt(rmsY / cnt) * 1000.0
    rms = na.sqrt(rms / cnt) * 1000.0

    mag = s.getArray('mag')
    x = s.getArray('x')
    y = s.getArray('y')
    r = na.sqrt(x**2 + y**2)

    idx = (na.where(mag < 15))[0]

    p.clf()
    p.semilogy(r[idx], rms[idx], 'k.')
コード例 #38
0
 def __init__(self, names, shape, g=None, h=None, K=None):
     Potential.__init__(self, names)
     self.shape = shape
     
     # set parameters to 0s
     self.n = na.sum(shape)
     if not g: self.g = 0.0
     else: self.g = float(g)
     if not h: self.h = na.zeros(shape=(self.n), type='Float32')     
     else: self.h = na.array(h,shape=(self.n), type='Float32')
     if not K: self.K = na.zeros(shape=(self.n, self.n), type='Float32')
     else: self.K = na.array(K, shape=(self.n, self.n), type='Float32')
コード例 #39
0
ファイル: fusion.py プロジェクト: EvertS3/code
 def processBands():
     # buffer arrays
     red = zeros((ysz,xsz),typecode)
     green = zeros((ysz,xsz),typecode)
     blue = zeros((ysz,xsz),typecode)
     pan = zeros((ysz,xsz),'f')
     # read into buffers
     GDALReadRaster(redBand._o,xbloff,ybloff,xsz,ysz,xsz,ysz,self.srcDt,red)
     GDALReadRaster(greenBand._o,xbloff,ybloff,xsz,ysz,xsz,ysz,self.srcDt,green)
     GDALReadRaster(blueBand._o,xbloff,ybloff,xsz,ysz,xsz,ysz,self.srcDt,blue)
     GDALReadRaster(panBand._o,xbloff,ybloff,xsz,ysz,xsz,ysz,gdal.GDT_Float32,pan)
     # merge
     mergeFn(red.astype('f'),green.astype('f'),blue.astype('f'),pan)
def create_predict_table(LCM, agent_set, agents_index, observed_choices_id, data_objects, geographies=[]):

    resources = data_objects

    mc_choices = sample_choice(LCM.model.probabilities)  # monte carlo choice
    mc_choices_index = LCM.model_resources.translate("index")[mc_choices]
    maxprob_choices = sample_choice(LCM.model.probabilities, method="max_prob")  # max prob choice
    maxprob_choices_index = LCM.model_resources.translate("index")[maxprob_choices]
    results = []

    gcs = resources.translate("gridcell")
    for geography in geographies:
        geos = resources.translate(geography)

        # get observed geo_id
        obs = copy_dataset(agent_set)
        obs.subset_by_index(agents_index)
        obs.set_values_of_one_attribute(gcs.id_name[0], observed_choices_id)

        resources.merge({"household": obs})  # , "gridcell": gcs, "zone": zones, "faz":fazes})
        obs.compute_variables(geos.id_name[0], resources=resources)
        obs_geo_ids = obs.get_attribute(geos.id_name[0])

        # count simulated choices
        sim = copy_dataset(obs)
        sim.set_values_of_one_attribute(gcs.id_name[0], gcs.get_id_attribute()[mc_choices_index])
        resources.merge({"household": sim})

        geos_size = geos.size()
        geo_ids = geos.get_id_attribute()

        pred_matrix = zeros((geos_size, geos_size))
        p_success = zeros((geos_size,)).astype(Float32)

        f = 0
        for geo_id in geo_ids:
            index_in_geo = where(obs_geo_ids == geo_id)[0]
            resources.merge({"select_index": index_in_geo})

            geos.compute_variables("number_of_select_households", resources=resources)
            pred_matrix[f] = geos.get_attribute("number_of_select_households")
            if sum(pred_matrix[f]) > 0:
                p_success[f] = float(pred_matrix[f, f]) / sum(pred_matrix[f])

            sim.increment_version("grid_id")  # to trigger recomputation in next iteration
            f += 1

        print p_success
        results.append((pred_matrix.copy(), p_success.copy()))

    return results
コード例 #41
0
def create_predict_table(LCM, agent_set, agents_index, observed_choices_id, data_objects, geographies=[]):

    resources = data_objects
    
    mc_choices = sample_choice(LCM.model.probabilities)    #monte carlo choice
    mc_choices_index = LCM.model_resources.translate("index")[mc_choices]
    maxprob_choices = sample_choice(LCM.model.probabilities, method="max_prob")  #max prob choice
    maxprob_choices_index = LCM.model_resources.translate("index")[maxprob_choices]
    results = []
    
    gcs = resources.translate("gridcell")
    for geography in geographies:
        geos = resources.translate(geography)
        
        #get observed geo_id
        obs = copy_dataset(agent_set)    
        obs.subset_by_index(agents_index)
        obs.set_values_of_one_attribute(gcs.id_name[0], observed_choices_id) 
    
        resources.merge({"household": obs}) #, "gridcell": gcs, "zone": zones, "faz":fazes})
        obs.compute_variables(geos.id_name[0], resources=resources)
        obs_geo_ids = obs.get_attribute(geos.id_name[0])
        
        #count simulated choices
        sim = copy_dataset(obs)
        sim.set_values_of_one_attribute(gcs.id_name[0], gcs.get_id_attribute()[mc_choices_index]) 
        resources.merge({"household": sim})
    
        geos_size = geos.size()
        geo_ids = geos.get_id_attribute()
        
        pred_matrix = zeros((geos_size, geos_size))
        p_success = zeros((geos_size,)).astype(Float32)
        
        f = 0
        for geo_id in geo_ids:
            index_in_geo = where(obs_geo_ids == geo_id)[0]
            resources.merge({"select_index": index_in_geo})
    
            geos.compute_variables("number_of_select_households", resources=resources)
            pred_matrix[f] = geos.get_attribute("number_of_select_households")
            if sum(pred_matrix[f]) > 0:
                p_success[f] = float(pred_matrix[f, f])/sum(pred_matrix[f])
    
            sim.increment_version('grid_id')  #to trigger recomputation in next iteration
            f += 1
            
        print p_success
        results.append((pred_matrix.copy(), p_success.copy()))
        
    return results
コード例 #42
0
def buildPearsonCorrelationMatrix(traits, commonStrains):
    dim = (len(traits), len(commonStrains))
    matrix = numarray.zeros(dim, MA.Float64)
    testMatrix = numarray.zeros(dim, MA.Float64)

    for i in range(len(traits)):
        sd = traits[i].strainData
        keys = sd.keys()
        for j in range(0, len(commonStrains)):
            if keys.__contains__(commonStrains[j]):
                matrix[i,j] = sd[commonStrains[j]]
                testMatrix[i,j] = 1

    return matrix, testMatrix
コード例 #43
0
def jac(func, x0, ind):
	"""Compute (n-1) x m Jacobian of function func at x0, where n = len(x0) and
	m = len(ind).  ind denotes the indices along which to compute the 
	Jacobian.  NOTE:  This assumes func has 1 more variable than equations!!."""
	
	eps = 1e-6
	n = len(x0)
	m = len(ind)
	J = zeros((n-1, m), Float)
	for i in range(m):
		ei = zeros(n, Float)
		ei[ind[i]] = 1.0
		J[:,i] = (func(x0+eps*ei)-func(x0-eps*ei))/(2*eps)
	return J
コード例 #44
0
 def diff(self, x0, ind=None):
     eps = 1e-6
     try:
         n = len(ind)
     except:
         n = self.n
         ind = range(n)
     
     J = zeros((self.m, n), Float)
     for i in range(n):
         ei = zeros(self.n, Float)
         ei[ind[i]] = 1.0
         J[:,i] = (self.func(x0+eps*ei)-self.func(x0-eps*ei))/(2*eps)
     return J
コード例 #45
0
ファイル: misc.py プロジェクト: pylhc/Python_Classes4MAD
def jac(func, x0, ind):
    """Compute (n-1) x m Jacobian of function func at x0, where n = len(x0) and
	m = len(ind).  ind denotes the indices along which to compute the 
	Jacobian.  NOTE:  This assumes func has 1 more variable than equations!!."""

    eps = 1e-6
    n = len(x0)
    m = len(ind)
    J = zeros((n - 1, m), Float)
    for i in range(m):
        ei = zeros(n, Float)
        ei[ind[i]] = 1.0
        J[:, i] = (func(x0 + eps * ei) - func(x0 - eps * ei)) / (2 * eps)
    return J
コード例 #46
0
ファイル: CP2KCalculator.py プロジェクト: Yiwei666/cp2k-1
    def GetCartesianForces(self):
        #Control from ASE API?

        #Make array of positions
        #Get number of atoms
        numAtoms = len(self.GetListOfAtoms())

        #Debugging
        print 'there are %i atoms' % (numAtoms)

        #Make a numarray to hold the atoms
        positions = numa.zeros((
            numAtoms,
            3,
        ), numa.Float64)

        #Get the info from each atom and copy it to the numarray
        count = 0
        tempList = self.GetListOfAtoms()
        for k in tempList:
            positions[count] = k.GetCartesianPosition()
            count = count + 1

        #Debugging
        print positions

        #Run a set positions
        cp2k_interface.c_set_pos(positions, self.env_id)

        #Run a get to check
        positions = numa.zeros((
            numAtoms,
            3,
        ), numa.Float64)
        cp2k_interface.c_get_pos(positions, self.env_id)

        #Debugging
        print positions

        #Calculate forces (update_forces)
        cp2k_interface.c_update_forces(self.env_id)

        #Now run a get force

        #Use parse tuple to get pyobject

        #Junk return
        self.forces = num.zeros((numAtoms, 3), num.Float)
        return self.forces
コード例 #47
0
ファイル: mystuffv2.py プロジェクト: rfinn/pythonCode
def binit(x, y, n):  #bin arrays x, y into n bins, returning xbin,ybin
    nx = len(x)
    y = N.take(y, N.argsort(x))  #sort y according to x rankings
    x = N.take(x, N.argsort(x))
    xbin = N.zeros(n, 'f')
    ybin = N.zeros(n, 'f')
    for i in range(n):
        nmin = i * int(float(nx) / float(n))
        nmax = (i + 1) * int(float(nx) / float(n))
        xbin[i] = pylab.median(x[nmin:nmax])
        ybin[i] = pylab.median(y[nmin:nmax])
        #xbin[i]=N.average(x[nmin:nmax])
        #ybin[i]=N.average(y[nmin:nmax])
        #ybinerr[i]=scipy.stats.std(y[nmin:nmax])
    return xbin, ybin  #, ybinerr
コード例 #48
0
ファイル: mad_combine.py プロジェクト: bamford/astrobamf
def _mad2(data, included):
    # adapted from NR function moment
    # same as mad3 but ignores zero values
    n = len(data[:,0,0])
    s = num.zeros(data[0,:,:].shape, num.Float32)
    # First pass to get the mean.
    for j in range(n): s += data[j,:,:]
    ave = s/included
    adev = num.zeros(s.shape, num.Float32)
    for j in range(n):
        d = where(num.fabs(data[j]) > tiny,
                  num.fabs(data[j] - ave),
                  0.0)
        num.add(adev, d, adev)
    return adev / included
コード例 #49
0
ファイル: kolmogorovmidpoint.py プロジェクト: bnikolic/oof
def GenLinSystem(poly):

    """
    Generates the linear system which allows factorisation of
    something like:
    
    (a1 * a+ a2 *b + a3 *c ....) ^2 into:
    c1(a-b)^2 + c2(a-c)^2
    
    For the two dimensional bilinear interpolator, get something like:
    
    p2 = numarray.array([3,-1,-1,-1])

     which may be solved by:
     a,r=GenLinSystem(p2)
     la.solve_linear_equations(a,r)

     """
    
    n=len(poly)

    # number of pairings
    NC=n*(n-1) /2
    NP=n*(n+1) /2

    # The linear system
    rhs = numarray.zeros(NP ,
                         numarray.Float64)
    a   = numarray.zeros( ( NP,NC) ,
                          numarray.Float64)

    for i in range(0, n-1):
        for j in range (i+1, n):
            cdx = CJKtoi(i,j,n)
            a[ PJKtoi(i,i,n) , cdx ] =1
            a[ PJKtoi(i,j,n) , cdx ] =-2
            a[ PJKtoi(j,j,n) , cdx ] =1

    # right hand side
    for i in range(0, n):
        for j in range (i, n):
            pdx=PJKtoi(i,j,n)
            if i == j:
                rhs[pdx]= poly[i]**2
            else:
                rhs[pdx]= 2 * poly[i] * poly[j]

    return a, rhs
コード例 #50
0
def dual_perceptron(x, y):
    """implements a dual form perceptron
    
    as defined in "Support Vector Machines", Cristiani, p.18
    @x is a list of i 'numarray.array's that define the input
    @y is a list of i correct outputs for x, must be syncronized with x
        i.e. y[3] == correct f(x[3])
    @n is the learning rate 0 < n < 1"""
    a = na.zeros(len(x), na.Float32)     #embedding strength = alpha
    b = 0                                       #bias
    R = math.pow(max_norm(x), 2)
    mistake_free = 0
    iteration = 0
    while mistake_free == 0 and iteration < 50:
        iteration += 1
        print "iteration #", iteration
        mistake_free = 1
        for i in range(len(x)):
            sum_lc = 0
            for j in range(len(x)):
                sum_lc += a[j] * y[j] * na.dot(x[j], x[i]) #+ b
            print sum_lc, a, y, x, b
            if y[i] * (sum_lc + b) <= 0:
                print b, a, sum_lc, y[i]
                a[i] += 1
                b += y[i] * R
                mistake_free = 0
    return (a, b)
コード例 #51
0
ファイル: example8_5.py プロジェクト: caitouwh/kod
def r(u):  # Boundary condition residuals-- see Eq. (8.7)
    r = zeros(len(u),type=Float64)
    X,Y = integrate(F,x,initCond(u),xStop,h)
    y = Y[len(Y) - 1]
    r[0] = y[2]             
    r[1] = y[3] - 1.0       
    return r
コード例 #52
0
def LUdecomp(a, tol=1.0e-9):
    n = len(a)
    seq = array(range(n))

    # Set up scale factors
    s = zeros((n), type=Float64)
    for i in range(n):
        s[i] = max(abs(a[i, :]))

    for k in range(0, n - 1):

        # Row interchange, if needed
        p = int(argmax(abs(a[k:n, k]) / s[k:n])) + k
        if abs(a[p, k]) < tol:
            error.err("Matrix is singular")
        if p != k:
            swap.swapRows(s, k, p)
            swap.swapRows(a, k, p)
            swap.swapRows(seq, k, p)

        # Elimination
        for i in range(k + 1, n):
            if a[i, k] != 0.0:
                lam = a[i, k] / a[k, k]
                a[i, k + 1 : n] = a[i, k + 1 : n] - lam * a[k, k + 1 : n]
                a[i, k] = lam
    return a, seq
コード例 #53
0
ファイル: test_numarray.py プロジェクト: PyQwt/PyQwt5
    def testHorizontalLinesARGB32(self):
        colors = (Qt.red, Qt.green, Qt.blue, Qt.white, Qt.black)
        alpha = 0xff000000
        red   = 0x00ff0000
        green = 0x0000ff00
        blue  = 0x000000ff
        white = 0x00ffffff
        black = 0x00000000

        image = QImage(3, len(colors), QImage.Format_ARGB32)
        painter = QPainter(image)
        for i, color in enumerate(colors):
            painter.setPen(color)
            painter.drawLine(0, i, image.width(), i)
        del painter

        array = np.zeros((image.height(), image.width()), dtype=np.UInt32)
        array[0,:] = alpha|red
        array[1,:] = alpha|green
        array[2,:] = alpha|blue
        array[3,:] = alpha|white
        array[4,:] = alpha|black

        self.assertEqual(np.all(array == toNumpy(image)), True)
        self.assertEqual(image == toQImage(array), True)