예제 #1
0
파일: getSlice.py 프로젝트: LLNL/gidiplus
def checkSlicing(XYs_base, i1, i2, doPrint=False):

    XYs = copy.copy(XYs_base)
    pXYs = pointwiseXY_C.pointwiseXY_C(data=XYs, initialSize=20)
    sXYs = XYs[i1:i2]
    if (doPrint):
        print()
        print(i1, i2)
        for xy in XYs:
            print(xy)
        print()
        print(sXYs)
    spXYs = pXYs[i1:i2]
    if (doPrint): spXYs
    if (len(sXYs) != len(spXYs)):        raise Exception( "%s: len( sXYs ) = %d != len( spXYs ) = %d: index1 = %d, i2 = %d" % \
( __file__, len( sXYs ), len( spXYs ), i1, i2 ) )

    for i, xy in enumerate(sXYs):
        if (xy[0] != spXYs[i][0]):
            raise Exception("%s: difference at index = %d: %e %e" %
                            (__file__, i, xy[0], spXYs[i][0]))

    slice = pXYs.getslice(i1, i2)
    for i, xy in enumerate(sXYs):
        if (xy[0] != slice[i][0]):
            raise Exception(
                "%s: getslice failed for difference at index = %d: %e %e" %
                (__file__, i, xy[0], slice[i][0]))
예제 #2
0
파일: thin.py 프로젝트: LLNL/gidiplus
def getData(ls, hasLabel):

    i = 0
    for l in ls:
        if (l.strip() != ''): break
        i = i + 1
    ls = ls[i:]
    if (len(ls) == 0): return (None, None, None, None)
    label, accuracy = None, None
    if (hasLabel):
        label, ls = ls[0].strip(), ls[1:]
        accuracy, ls = ls[0].strip(), ls[1:]
        if (accuracy[:13] != '# accuracy = '):
            raise Exception('%s: line does not contain accuracy info: "%s"' %
                            (__file__, accuracy[:-1]))
        accuracy = float(accuracy.split('=')[1])
    length, ls = ls[0], ls[1:]
    if ('# length = ' != length[:11]):
        raise Exception('%s: line does not contain length info: "%s"' %
                        (__file__, length.strip()))
    length = int(length.split('=')[1])
    data = [list(map(float, ls[i].split()[:2])) for i in range(length)]
    return (ls[length:], label, accuracy,
            pointwiseXY_C.pointwiseXY_C(data, initialSize=100,
                                        overflowSize=10))
예제 #3
0
파일: testExp_1.py 프로젝트: LLNL/gidiplus
def getXYData( fileName, accuracy, biSectionMax ) :

    f = open( os.path.join( CPATH, fileName  + '.dat' ) )
    ls = f.readlines( )
    ls, length = getIntegerValue( 'length', ls )
    data = [ list( map( float, ls[i].split( ) ) ) for i in range( length ) ]
    data = pointwiseXY_C.pointwiseXY_C( data, initialSize = len( data ), overflowSize = 10, accuracy = accuracy, biSectionMax = biSectionMax )
    return( data )
예제 #4
0
파일: dullEdges.py 프로젝트: LLNL/gidiplus
def getXYData( ls ) :

    ls, length = getIntegerValue( 'length', ls )
    data = [ list( map( float, ls[i].split( ) ) ) for i in range( length ) ]
    data = pointwiseXY_C.pointwiseXY_C( data, initialSize = len( data ), overflowSize = 10 )
    ls = ls[length:]
    ls = skipBlankLines( ls )
    return( ls, data )
예제 #5
0
def getXYData( fileName ) :

    fileName_ = os.path.join( CPATH, fileName )
    f = open( fileName_ )
    ls = f.readlines( )
    f.close( )
    ls, length = getIntegerValue( 'length', ls )
    data = [ list( map( float, l.split( ) ) ) for l in ls ]
    data = pointwiseXY_C.pointwiseXY_C( data, initialSize = len( data ), overflowSize = 10 )
    return( data )
예제 #6
0
파일: gaussian.py 프로젝트: LLNL/gidiplus
def getData(ls):

    i = 0
    for l in ls:
        if (l.strip() != ''): break
        i = i + 1
    ls = ls[i:]
    if (len(ls) == 0): return (ls)
    if (ls[0][:9] == "# area = "): ls = ls[1:]
    if (len(ls) == 0): return (ls)

    label = ls[0][2:-1]
    if (label not in [
            'ptwXY_createGaussianCenteredSigma1', 'ptwXY_createGaussian'
    ]):
        raise Exception('%s: invalid label = "%s"' % (__file__, ls[0][:-1]))
    ls = ls[1:]
    ls, accuracy = getDoubleValue('accuracy', ls)
    ls, offset = getDoubleValue('offset', ls)
    ls, sigma = getDoubleValue('sigma', ls)
    ls, amplitude = getDoubleValue('amplitude', ls)
    ls, xMin = getDoubleValue('xMin', ls)
    ls, xMax = getDoubleValue('xMax', ls)
    ls, dullEps = getDoubleValue('dullEps', ls)

    length, ls = ls[0], ls[1:]
    if ('# length = ' != length[:11]):
        raise Exception('%s: line does not contain length info: "%s"' %
                        (__file__, length.strip()))
    length = int(length.split('=')[1])

    data = [list(map(float, ls[i].split()[:2])) for i in range(length)]
    data = pointwiseXY_C.pointwiseXY_C(data,
                                       initialSize=len(data),
                                       overflowSize=10)
    ls = ls[length:]
    if (label == 'ptwXY_createGaussianCenteredSigma1'):
        gaussian = pointwiseXY_C.basicGaussian(accuracy)
    else:
        gaussian = pointwiseXY_C.gaussian(accuracy=accuracy,
                                          domainMin=xMin,
                                          domainMax=xMax,
                                          offset=offset,
                                          sigma=sigma,
                                          amplitude=amplitude,
                                          dullEps=dullEps)
    if (len(data) != len(gaussian)):
        raise Exception(
            '%s: len( data ) = %d != len( gaussian ) = %d for label "%s"' %
            (__file__, len(data), len(gaussian), label))
    for i, dXY in enumerate(data):
        gXY = gaussian[i]
        compareValues(label, i, dXY[0], gXY[0])
        compareValues(label, i, dXY[1], gXY[1])
    return (ls)
예제 #7
0
파일: inverse.py 프로젝트: LLNL/gidiplus
def getXYData(ls):

    ls, length = getIntegerValue('length', ls)
    ls, interpolation = getIntegerValue('interpolation', ls)
    ls, interpolationStr = getStringValue('interpolation string', ls)
    data = [list(map(float, ls[i].split())) for i in range(length)]
    data = pointwiseXY_C.pointwiseXY_C(data,
                                       initialSize=len(data),
                                       interpolation=interpolationStr)
    ls = ls[length:]
    ls = skipBlankLines(ls)
    return (ls, data)
예제 #8
0
파일: add.py 프로젝트: LLNL/gidiplus
def getXYData(ls, biSectionMax, accuracy):

    ls, length = getIntegerValue('length', ls)
    data = [list(map(float, ls[i].split())) for i in range(length)]
    data = pointwiseXY_C.pointwiseXY_C(data,
                                       initialSize=len(data),
                                       overflowSize=10,
                                       biSectionMax=biSectionMax,
                                       accuracy=accuracy,
                                       safeDivide=True)
    ls = ls[length:]
    ls = skipBlankLines(ls)
    return (ls, data)
예제 #9
0
def getXYData(ls):

    ls, length = getIntegerValue('length', ls)
    ls, interpolation = getIntegerValue('interpolation', ls)
    interpolationStr = ['lin-lin', 'log-lin', 'lin-log', 'log-log',
                        'flat'][interpolation]
    data = [list(map(float, ls[i].split())) for i in range(length)]
    data = pointwiseXY_C.pointwiseXY_C(data,
                                       initialSize=len(data),
                                       overflowSize=10,
                                       interpolation=interpolationStr)
    ls = ls[length:]
    ls = skipBlankLines(ls)
    return (ls, data)
예제 #10
0
def check(ptwXY2, interpolation, index):

    ptwXY = pointwiseXY_C.pointwiseXY_C([[1, 1], [10, 10]],
                                        interpolation=interpolation)
    string = ptwXY.getInterpolation()
    compareStrings(strings[index], string)
    if ('-v' in options): print(string)

    ptwXY2 = ptwXY.copy()
    string = ptwXY.getInterpolation()
    compareStrings(strings[index + 1], string)
    if ('-v' in options): print(string)
    if ('-v' in options): print(string)

    return (ptwXY)
예제 #11
0
def getXYData(ls):

    ls = skipBlankLines(ls)
    ls, length = getIntegerValue('length', ls)
    data = [list(map(float, ls[i].split())) for i in range(length)]
    XYs, sums = [], []
    for x, y, s in data:
        XYs.append((x, y))
        sums.append(s)
    XYs = pointwiseXY_C.pointwiseXY_C(XYs,
                                      initialSize=len(data),
                                      overflowSize=10)
    ls = ls[length:]
    ls = skipBlankLines(ls)
    return (ls, XYs, sums)
예제 #12
0
def getData(ls):

    ls = utilities.skipBlankLines(ls)
    if (len(ls) == 0): return (None, None, None, None, None, None)
    label, accuracy = None, None
    label, ls = ls[0].strip(), ls[1:]
    if (label != '# Xs'):
        raise Exception('%s: missing line "# Xs": found "%s"' %
                        (__file__, label))
    ls, Xs = utilities.getXData(ls, '=')
    ls, accuracy = utilities.getDoubleValue('accuracy', ls)
    ls, biSectionMax = utilities.getDoubleValue('biSectionMax', ls)
    ls, data = utilities.getXYData(ls)
    return (ls, label, accuracy, biSectionMax, Xs,
            pointwiseXY_C.pointwiseXY_C(data, accuracy=accuracy))
예제 #13
0
def getData(ls, accuracy):

    global line
    i = 0
    for l in ls:
        if (l.strip() != ''): break
        i = i + 1
    line += i
    ls = ls[i:]
    ls, length = getIntegerValue('length', ls)

    data = [list(map(float, ls[i].split()[:2])) for i in range(length)]
    data = pointwiseXY_C.pointwiseXY_C(data,
                                       initialSize=len(data),
                                       overflowSize=10,
                                       accuracy=accuracy)
    line += length
    return (ls[length:], data)
예제 #14
0
from numericalFunctions import pointwiseXY_C

if( 'CHECKOPTIONS' in os.environ ) :
    options = os.environ['CHECKOPTIONS'].split( )
    if( '-e' in options ) : print( __file__ )

status = 0

def check( xys, x, correctIndex ) :

    global status

    index = xys.lowerIndexBoundingX( x )
    if( correctIndex != index ) :
        if( status == 0 ) : print( 'Error from %s: correctIndex = %d for x = %e and got index = %d' % ( __file__, correctIndex, x, index ) )
        status += 1

data = [ [ -1.1, 0 ], [ 0.7, 1 ], [ 10, 0 ], [ 1001.1, 1 ] ]
xys = pointwiseXY_C.pointwiseXY_C( data, initialSize = len( data ), overflowSize = 10 )

i1 = -1
x1 = data[0][0] - 1
for i2, ( x2, y ) in enumerate( data ) :
    x = 0.5 * ( x1 + x2 )
    check( xys, x, i1 )
    i1 = i2
    x1 = x2

i1 = check( xys, x1 + 1, -1 )
sys.exit( status )
예제 #15
0
from numericalFunctions import pointwiseXY_C

if ('CHECKOPTIONS' in os.environ):
    options = os.environ['CHECKOPTIONS'].split()
    if ('-e' in options): print(__file__)

CPATH = '../../../../Test/UnitTesting/toFunction'

accuracy = 1e-3


def func(x, parameters):

    self = parameters[0]
    index = self.lowerIndexBoundingX(x)
    self[len(self)]  # This should cause a python raise.
    return (x * x)


linear = pointwiseXY_C.pointwiseXY_C([[-2, -2], [1, 1], [2, 2], [5, 5]])
parameters = [linear]
try:
    squared = linear.applyFunction(func,
                                   parameters,
                                   accuracy=accuracy,
                                   biSectionMax=10)
except:
    sys.exit(0)
raise Exception('The callback raise did not propagate properly.')
예제 #16
0
import math
import random
import sys
sys.path.insert(0, '../../Utilities')

from numericalFunctions import pointwiseXY_C

import utilities

options = utilities.getOptions(__file__)

xData = [0.5 * i - 0.145 for i in range(51)]
yData = [math.sin(x) for x in xData]

xys = pointwiseXY_C.pointwiseXY_C([xData, yData],
                                  initialSize=len(xData),
                                  overflowSize=10,
                                  dataForm='XsAndYs')

n1 = len(xData)
for i1 in range(n1):
    n2 = len(xData)
    i2 = random.randint(0, n2 - 1)
    x1 = xData.pop(i2)
    y1 = yData.pop(i2)
    x2, y2 = xys.pop(i2)
    if (x1 != x2):
        raise Exception('x1 = %.17e != x2 = %.17e, length left = %d' %
                        (x1, x2, len(xData)))
    if (y1 != y2):
        raise Exception('y1 = %.17e != y2 = %.17e, length left = %d' %
                        (y1, y2, len(xData)))
예제 #17
0
파일: t8.py 프로젝트: LLNL/gidiplus
# See the top-level COPYRIGHT file for details.
# 
# SPDX-License-Identifier: MIT
# <<END-copyright>>

"""
This stuff should be repeatable. Simple test of operators '+', '-', '*', 'neg', 'abs', 'pow' and union method.
"""

from __future__ import print_function

import random

from numericalFunctions import pointwiseXY_C

d = pointwiseXY_C.pointwiseXY_C( initialSize = 100, overflowSize = 31 )

d.setValue( 1, 11. )
d.setValue( 3.14, 3.12 )
d.setValue( 7.66, -1.5 )
d.setValue( 3.66, -1.6 )
d.setValue( 2.66,  1.7 )

print( '---- d ----' )
print( d )

e = d
del e[2]

print( '---- del d[2] ----' )
print( d )
예제 #18
0
import random
random.seed( 314159 )
xMin, xMax = -100, 50
yMin, yMax = -1., 10.
n = 100

xs, ys, xys = [], [], []
for i in range( n ) :
    x, y = ( xMax - xMin ) * random.random() + xMin, ( yMax - yMin ) * random.random() + yMin
    xys.append( [ x, y ] )
xys.sort( )                 # Hopefully, no two x-values are the same.
for x, y in xys :
    xs.append( x )
    ys.append( y )

xysPy = pointwiseXY_C.pointwiseXY_C( data = xys )

xysPy2 = pointwiseXY_C.pointwiseXY_C( data = [ xs, ys ], dataForm = 'xsAndYs' )
compareData( xysPy, xysPy2 )

xysPy2 = pointwiseXY_C.pointwiseXY_C( )
xysPy2.setData( xys )
compareData( xysPy, xysPy2 )

xysPy2 = pointwiseXY_C.pointwiseXY_C( )
xysPy2.setDataFromXsAndYs( xs, ys )
compareData( xysPy, xysPy2 )

copiedXYs = xysPy.copyDataToXYs( )
compareData( xys, copiedXYs )
예제 #19
0
# Copyright 2019, Lawrence Livermore National Security, LLC.
# See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: MIT
# <<END-copyright>>
"""
Some simple stuff that should repeat.
"""

from __future__ import print_function

import random

from numericalFunctions import pointwiseXY_C

d = pointwiseXY_C.pointwiseXY_C(initialSize=7, overflowSize=3)

xMin, xMax = 1, 100
yMin, yMax = -1., 0.
n = 100000
n_10 = n / 10
random.seed(314159)
for i in range(n):
    if ((i % n_10) == 0): print(i)
    r = random.random()
    x = xMin * r + xMax * (1. - r)
    r = random.random()
    y = yMin * r + yMax * (1. - r)
    d.setValue(x, y)

xm = xMin - 1
예제 #20
0
파일: t7.py 프로젝트: LLNL/gidiplus
# See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: MIT
# <<END-copyright>>
"""
This is a test of the method copy. Creates a pointwiseXY_C object and makes a copy. The outputs should be the same.
"""

from __future__ import print_function

import time
import random

from numericalFunctions import pointwiseXY_C

d = pointwiseXY_C.pointwiseXY_C(initialSize=100000, overflowSize=3100)

xMin, xMax = 1, 100
yMin, yMax = -1., 0.
n = 100000
t0 = time.process_time()
random.seed(314159)
for i in range(n):
    r = random.random()
    x = xMin * r + xMax * (1. - r)
    r = random.random()
    y = yMin * r + yMax * (1. - r)
    d.setValue(x, y)

print('# time', time.process_time() - t0)
d2 = d.copy()
예제 #21
0
파일: setting.py 프로젝트: LLNL/gidiplus
from numericalFunctions import pointwiseXY_C

import utilities

options = utilities.getOptions(__file__)

xData = [0.5 * i - 0.145 for i in range(51)]
yData = [math.sin(x) for x in xData]
XYData = [[x, yData[i]] for i, x in enumerate(xData)]
listData = []
for i, x in enumerate(xData):
    listData.append(x)
    listData.append(yData[i])

dataXYs = pointwiseXY_C.pointwiseXY_C(XYData,
                                      initialSize=len(XYData),
                                      overflowSize=10)
dataXYs2 = pointwiseXY_C.pointwiseXY_C(XYData,
                                       initialSize=len(XYData),
                                       overflowSize=10,
                                       dataForm='xys')
dataXsAndYs = pointwiseXY_C.pointwiseXY_C([xData, yData],
                                          initialSize=len(XYData),
                                          overflowSize=10,
                                          dataForm='XsAndYs')
dataList = pointwiseXY_C.pointwiseXY_C(listData,
                                       initialSize=len(XYData),
                                       overflowSize=10,
                                       dataForm='List')

예제 #22
0
from numericalFunctions import pointwiseXY_C

import utilities

options = utilities.getOptions(__file__)

CPATH = '../../../../Test/UnitTesting/interpolation'
accuracy = None, None


def getXYData(fileName, getParameters=False):

    global accuracy

    f = open(os.path.join(CPATH, fileName))
    ls = f.readlines()
    f.close()
    if (getParameters):
        if ('accuracy' not in ls[0]):
            raise Exception('Sparse file missing "accuracy" data.')
        accuracy = float(ls.pop(0).split('=')[1])
    xys = utilities.getXYData(ls)[1]
    return (xys)


os.system('cd %s; make -s clean; ./chargedParticle' % CPATH)
sparse = getXYData('curve_sparse.dat', True)
sparse = pointwiseXY_C.pointwiseXY_C([xy for xy in sparse],
                                     interpolation='charged-particle')
예제 #23
0
    if (_stringC != stringPy):
        raise Exception('_stringC = "%s" not equal to stringPy = "%s"' %
                        (_stringC, stringPy))


def check(ptwXY2, interpolation, index):

    ptwXY = pointwiseXY_C.pointwiseXY_C([[1, 1], [10, 10]],
                                        interpolation=interpolation)
    string = ptwXY.getInterpolation()
    compareStrings(strings[index], string)
    if ('-v' in options): print(string)

    ptwXY2 = ptwXY.copy()
    string = ptwXY.getInterpolation()
    compareStrings(strings[index + 1], string)
    if ('-v' in options): print(string)
    if ('-v' in options): print(string)

    return (ptwXY)


ptwXY2 = pointwiseXY_C.pointwiseXY_C([[1, 1], [10, 10]],
                                     interpolation='charged-particle')
ptwXY2 = check(ptwXY2, 'lin-lin', 0)
ptwXY2 = check(ptwXY2, 'log-lin', 3)
ptwXY2 = check(ptwXY2, 'lin-log', 6)
ptwXY2 = check(ptwXY2, 'log-log', 9)
ptwXY2 = check(ptwXY2, 'flat', 12)
ptwXY2 = check(ptwXY2, 'charged-particle', 15)
예제 #24
0
파일: copy.py 프로젝트: LLNL/gidiplus
                        (len(xys1), len(xys2)))
    for i, xy1 in enumerate(xys1):
        xy2 = xys2[i]
        compareValues('x', i, xy1[0], xy2[0])
        compareValues('x', i, xy1[1], xy2[1])


xs = [x + .1 for x in range(2, 33)]
ys = [x * x for x in xs]
xys = list(zip(xs, ys))
xylist = []
for i, x in enumerate(xs):
    xylist.append(x)
    xylist.append(ys[i])

xys1 = pointwiseXY_C.pointwiseXY_C(data=xys)
xys2 = pointwiseXY_C.pointwiseXY_C(data=xys, dataForm='XYs')
compareXYs(xys1, xys2)

xys2 = pointwiseXY_C.pointwiseXY_C(data=[xs, ys], dataForm='xsandys')
compareXYs(xys1, xys2)

xys2 = pointwiseXY_C.pointwiseXY_C(data=[xs, ys], dataForm='XsAndYs')
compareXYs(xys1, xys2)

xys2 = pointwiseXY_C.pointwiseXY_C(data=xylist, dataForm='List')
compareXYs(xys1, xys2)

xys2 = xys1.copy()
compareXYs(xys1, xys2)
예제 #25
0
# Copyright 2019, Lawrence Livermore National Security, LLC.
# See the top-level COPYRIGHT file for details.
# 
# SPDX-License-Identifier: MIT
# <<END-copyright>>

"""
Some simple stuff that should repeat.
"""

from __future__ import print_function

from numericalFunctions import pointwiseXY_C

data = [ [ 1, 1. ], [ 3., 3.14 ], [ 4.5, -5 ], [ 6.6, 2 ] ]
f = pointwiseXY_C.pointwiseXY_C( data, initialSize = 40, overflowSize = 10 )
print( 'len( f ) =', len( f ) )
print( 'f.allocatedSize( ) =', f.allocatedSize( ) )
print( 'f.overflowAllocatedSize( ) =', f.overflowAllocatedSize( ) )
print( 'f.overflowLength( ) =', f.overflowLength( ) )

print( 'f[2] = ', f[2] )

print( 'f.evaluate( 2. ) =', f.evaluate( 2. ) )
print( 'f.evaluate( 5.5 ) =', f.evaluate( 5.5 ) )
print( 'f.evaluate( 7. ) =', f.evaluate( 7. ) )

print( 'f.domainMin( ) = ', f.domainMin( ) )
print( 'f.domainMax( ) = ', f.domainMax( ) )

print( )
예제 #26
0
#
# SPDX-License-Identifier: MIT
# <<END-copyright>>

from __future__ import print_function

import os

from numericalFunctions import pointwiseXY_C

if ('CHECKOPTIONS' in os.environ):
    options = os.environ['CHECKOPTIONS'].split()
    if ('-e' in options): print(__file__)

value = 2.4
orig = pointwiseXY_C.pointwiseXY_C([[0, 1], [1, 3], [3, -1]])
errs = []


def check(operator, other):

    global orig
    m1 = eval('orig %s other' % operator)
    m2 = orig.copy()
    m3 = m2
    exec('m2 %s= other' % operator)
    d1 = m2 - m1
    if (d1.rangeMin() != 0.):
        errs.append('failure for operator "%s": d1.rangeMin( ) = %e != 0.' %
                    (operator, d1.rangeMin()))
    if (d1.rangeMax() != 0.):