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]))
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))
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 )
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 )
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 )
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)
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)
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)
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)
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)
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)
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))
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)
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 )
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.')
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)))
# 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 )
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 )
# 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
# 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()
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')
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')
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)
(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)
# 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( )
# # 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.):