Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux indy02.toastserver.com 3.10.0-962.3.2.lve1.5.85.el7.x86_64 #1 SMP Thu Apr 18 15:18:36 UTC 2024 x86_64
User : palandch ( 1163)
PHP Version : 7.1.33
Disable Function : NONE
Directory :  /opt/alt/python27/lib64/python2.7/site-packages/matplotlib/delaunay/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/alt/python27/lib64/python2.7/site-packages/matplotlib/delaunay/testfuncs.py
"""Some test functions for bivariate interpolation.

Most of these have been yoinked from ACM TOMS 792.
http://netlib.org/toms/792
"""

import numpy as np
from triangulate import Triangulation

class TestData(dict):
    def __init__(self, *args, **kwds):
        dict.__init__(self, *args, **kwds)
        self.__dict__ = self

class TestDataSet(object):
    def __init__(self, **kwds):
        self.__dict__.update(kwds)

data = TestData(
franke100=TestDataSet(
    x=np.array([ 0.0227035,  0.0539888,  0.0217008,  0.0175129,  0.0019029,
                -0.0509685,  0.0395408, -0.0487061,  0.0315828, -0.0418785,
                 0.1324189,  0.1090271,  0.1254439,  0.093454 ,  0.0767578,
                 0.1451874,  0.0626494,  0.1452734,  0.0958668,  0.0695559,
                 0.2645602,  0.2391645,  0.208899 ,  0.2767329,  0.1714726,
                 0.2266781,  0.1909212,  0.1867647,  0.2304634,  0.2426219,
                 0.3663168,  0.3857662,  0.3832392,  0.3179087,  0.3466321,
                 0.3776591,  0.3873159,  0.3812917,  0.3795364,  0.2803515,
                 0.4149771,  0.4277679,  0.420001 ,  0.4663631,  0.4855658,
                 0.4092026,  0.4792578,  0.4812279,  0.3977761,  0.4027321,
                 0.5848691,  0.5730076,  0.6063893,  0.5013894,  0.5741311,
                 0.6106955,  0.5990105,  0.5380621,  0.6096967,  0.5026188,
                 0.6616928,  0.6427836,  0.6396475,  0.6703963,  0.7001181,
                 0.633359 ,  0.6908947,  0.6895638,  0.6718889,  0.6837675,
                 0.7736939,  0.7635332,  0.7410424,  0.8258981,  0.7306034,
                 0.8086609,  0.8214531,  0.729064 ,  0.8076643,  0.8170951,
                 0.8424572,  0.8684053,  0.8366923,  0.9418461,  0.8478122,
                 0.8599583,  0.91757  ,  0.8596328,  0.9279871,  0.8512805,
                 1.044982 ,  0.9670631,  0.9857884,  0.9676313,  1.0129299,
                 0.965704 ,  1.0019855,  1.0359297,  1.0414677,  0.9471506]),
    y=np.array([-0.0310206,  0.1586742,  0.2576924,  0.3414014,  0.4943596,
                 0.5782854,  0.6993418,  0.7470194,  0.9107649,  0.996289 ,
                 0.050133 ,  0.0918555,  0.2592973,  0.3381592,  0.4171125,
                 0.5615563,  0.6552235,  0.7524066,  0.9146523,  0.9632421,
                 0.0292939,  0.0602303,  0.2668783,  0.3696044,  0.4801738,
                 0.5940595,  0.6878797,  0.8185576,  0.9046507,  0.9805412,
                 0.0396955,  0.0684484,  0.2389548,  0.3124129,  0.4902989,
                 0.5199303,  0.6445227,  0.8203789,  0.8938079,  0.9711719,
                -0.0284618,  0.1560965,  0.2262471,  0.3175094,  0.3891417,
                 0.5084949,  0.6324247,  0.7511007,  0.8489712,  0.9978728,
                -0.0271948,  0.127243 ,  0.2709269,  0.3477728,  0.4259422,
                 0.6084711,  0.6733781,  0.7235242,  0.9242411,  1.0308762,
                 0.0255959,  0.0707835,  0.2008336,  0.3259843,  0.4890704,
                 0.5096324,  0.669788 ,  0.7759569,  0.9366096,  1.0064516,
                 0.0285374,  0.1021403,  0.1936581,  0.3235775,  0.4714228,
                 0.6091595,  0.6685053,  0.8022808,  0.847679 ,  1.0512371,
                 0.0380499,  0.0902048,  0.2083092,  0.3318491,  0.4335632,
                 0.5910139,  0.6307383,  0.8144841,  0.904231 ,  0.969603 ,
                -0.01209  ,  0.1334114,  0.2695844,  0.3795281,  0.4396054,
                 0.5044425,  0.6941519,  0.7459923,  0.8682081,  0.9801409])),
franke33=TestDataSet(
    x=np.array([  5.00000000e-02,   0.00000000e+00,   0.00000000e+00,
                  0.00000000e+00,   1.00000000e-01,   1.00000000e-01,
                  1.50000000e-01,   2.00000000e-01,   2.50000000e-01,
                  3.00000000e-01,   3.50000000e-01,   5.00000000e-01,
                  5.00000000e-01,   5.50000000e-01,   6.00000000e-01,
                  6.00000000e-01,   6.00000000e-01,   6.50000000e-01,
                  7.00000000e-01,   7.00000000e-01,   7.00000000e-01,
                  7.50000000e-01,   7.50000000e-01,   7.50000000e-01,
                  8.00000000e-01,   8.00000000e-01,   8.50000000e-01,
                  9.00000000e-01,   9.00000000e-01,   9.50000000e-01,
                  1.00000000e+00,   1.00000000e+00,   1.00000000e+00]),
    y=np.array([  4.50000000e-01,   5.00000000e-01,   1.00000000e+00,
                  0.00000000e+00,   1.50000000e-01,   7.50000000e-01,
                  3.00000000e-01,   1.00000000e-01,   2.00000000e-01,
                  3.50000000e-01,   8.50000000e-01,   0.00000000e+00,
                  1.00000000e+00,   9.50000000e-01,   2.50000000e-01,
                  6.50000000e-01,   8.50000000e-01,   7.00000000e-01,
                  2.00000000e-01,   6.50000000e-01,   9.00000000e-01,
                  1.00000000e-01,   3.50000000e-01,   8.50000000e-01,
                  4.00000000e-01,   6.50000000e-01,   2.50000000e-01,
                  3.50000000e-01,   8.00000000e-01,   9.00000000e-01,
                  0.00000000e+00,   5.00000000e-01,   1.00000000e+00])),
lawson25=TestDataSet(
    x=np.array([ 0.1375,  0.9125,  0.7125,  0.225 , -0.05  ,  0.475 ,  0.05  ,
                 0.45  ,  1.0875,  0.5375, -0.0375,  0.1875,  0.7125,  0.85  ,
                 0.7   ,  0.275 ,  0.45  ,  0.8125,  0.45  ,  1.    ,  0.5   ,
                 0.1875,  0.5875,  1.05  ,  0.1   ]),
    y=np.array([ 0.975  ,  0.9875 ,  0.7625 ,  0.8375 ,  0.4125 ,  0.6375 ,
                -0.05   ,  1.0375 ,  0.55   ,  0.8    ,  0.75   ,  0.575  ,
                 0.55   ,  0.4375 ,  0.3125 ,  0.425  ,  0.2875 ,  0.1875 ,
                -0.0375 ,  0.2625 ,  0.4625 ,  0.2625 ,  0.125  , -0.06125,  0.1125 ])),
random100=TestDataSet(
    x=np.array([ 0.0096326,  0.0216348,  0.029836 ,  0.0417447,  0.0470462,
                 0.0562965,  0.0646857,  0.0740377,  0.0873907,  0.0934832,
                 0.1032216,  0.1110176,  0.1181193,  0.1251704,  0.132733 ,
                 0.1439536,  0.1564861,  0.1651043,  0.1786039,  0.1886405,
                 0.2016706,  0.2099886,  0.2147003,  0.2204141,  0.2343715,
                 0.240966 ,  0.252774 ,  0.2570839,  0.2733365,  0.2853833,
                 0.2901755,  0.2964854,  0.3019725,  0.3125695,  0.3307163,
                 0.3378504,  0.3439061,  0.3529922,  0.3635507,  0.3766172,
                 0.3822429,  0.3869838,  0.3973137,  0.4170708,  0.4255588,
                 0.4299218,  0.4372839,  0.4705033,  0.4736655,  0.4879299,
                 0.494026 ,  0.5055324,  0.5162593,  0.5219219,  0.5348529,
                 0.5483213,  0.5569571,  0.5638611,  0.5784908,  0.586395 ,
                 0.5929148,  0.5987839,  0.6117561,  0.6252296,  0.6331381,
                 0.6399048,  0.6488972,  0.6558537,  0.6677405,  0.6814074,
                 0.6887812,  0.6940896,  0.7061687,  0.7160957,  0.7317445,
                 0.7370798,  0.746203 ,  0.7566957,  0.7699998,  0.7879347,
                 0.7944014,  0.8164468,  0.8192794,  0.8368405,  0.8500993,
                 0.8588255,  0.8646496,  0.8792329,  0.8837536,  0.8900077,
                 0.8969894,  0.9044917,  0.9083947,  0.9203972,  0.9347906,
                 0.9434519,  0.9490328,  0.9569571,  0.9772067,  0.9983493]),
    y=np.array([ 0.3083158,  0.2450434,  0.8613847,  0.0977864,  0.3648355,
                 0.7156339,  0.5311312,  0.9755672,  0.1781117,  0.5452797,
                 0.1603881,  0.7837139,  0.9982015,  0.6910589,  0.104958 ,
                 0.8184662,  0.7086405,  0.4456593,  0.1178342,  0.3189021,
                 0.9668446,  0.7571834,  0.2016598,  0.3232444,  0.4368583,
                 0.8907869,  0.064726 ,  0.5692618,  0.2947027,  0.4332426,
                 0.3347464,  0.7436284,  0.1066265,  0.8845357,  0.515873 ,
                 0.9425637,  0.4799701,  0.1783069,  0.114676 ,  0.8225797,
                 0.2270688,  0.4073598,  0.887508 ,  0.7631616,  0.9972804,
                 0.4959884,  0.3410421,  0.249812 ,  0.6409007,  0.105869 ,
                 0.5411969,  0.0089792,  0.8784268,  0.5515874,  0.4038952,
                 0.1654023,  0.2965158,  0.3660356,  0.0366554,  0.950242 ,
                 0.2638101,  0.9277386,  0.5377694,  0.7374676,  0.4674627,
                 0.9186109,  0.0416884,  0.1291029,  0.6763676,  0.8444238,
                 0.3273328,  0.1893879,  0.0645923,  0.0180147,  0.8904992,
                 0.4160648,  0.4688995,  0.2174508,  0.5734231,  0.8853319,
                 0.8018436,  0.6388941,  0.8931002,  0.1000558,  0.2789506,
                 0.9082948,  0.3259159,  0.8318747,  0.0508513,  0.970845 ,
                 0.5120548,  0.2859716,  0.9581641,  0.6183429,  0.3779934,
                 0.4010423,  0.9478657,  0.7425486,  0.8883287,  0.549675 ])),
uniform9=TestDataSet(
    x=np.array([  1.25000000e-01,   0.00000000e+00,   0.00000000e+00,
                  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
                  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
                  0.00000000e+00,   1.25000000e-01,   1.25000000e-01,
                  1.25000000e-01,   1.25000000e-01,   1.25000000e-01,
                  1.25000000e-01,   1.25000000e-01,   1.25000000e-01,
                  2.50000000e-01,   2.50000000e-01,   2.50000000e-01,
                  2.50000000e-01,   2.50000000e-01,   2.50000000e-01,
                  2.50000000e-01,   2.50000000e-01,   2.50000000e-01,
                  3.75000000e-01,   3.75000000e-01,   3.75000000e-01,
                  3.75000000e-01,   3.75000000e-01,   3.75000000e-01,
                  3.75000000e-01,   3.75000000e-01,   3.75000000e-01,
                  5.00000000e-01,   5.00000000e-01,   5.00000000e-01,
                  5.00000000e-01,   5.00000000e-01,   5.00000000e-01,
                  5.00000000e-01,   5.00000000e-01,   5.00000000e-01,
                  6.25000000e-01,   6.25000000e-01,   6.25000000e-01,
                  6.25000000e-01,   6.25000000e-01,   6.25000000e-01,
                  6.25000000e-01,   6.25000000e-01,   6.25000000e-01,
                  7.50000000e-01,   7.50000000e-01,   7.50000000e-01,
                  7.50000000e-01,   7.50000000e-01,   7.50000000e-01,
                  7.50000000e-01,   7.50000000e-01,   7.50000000e-01,
                  8.75000000e-01,   8.75000000e-01,   8.75000000e-01,
                  8.75000000e-01,   8.75000000e-01,   8.75000000e-01,
                  8.75000000e-01,   8.75000000e-01,   8.75000000e-01,
                  1.00000000e+00,   1.00000000e+00,   1.00000000e+00,
                  1.00000000e+00,   1.00000000e+00,   1.00000000e+00,
                  1.00000000e+00,   1.00000000e+00,   1.00000000e+00]),
    y=np.array([  0.00000000e+00,   1.25000000e-01,   2.50000000e-01,
                  3.75000000e-01,   5.00000000e-01,   6.25000000e-01,
                  7.50000000e-01,   8.75000000e-01,   1.00000000e+00,
                  0.00000000e+00,   1.25000000e-01,   2.50000000e-01,
                  3.75000000e-01,   5.00000000e-01,   6.25000000e-01,
                  7.50000000e-01,   8.75000000e-01,   1.00000000e+00,
                  0.00000000e+00,   1.25000000e-01,   2.50000000e-01,
                  3.75000000e-01,   5.00000000e-01,   6.25000000e-01,
                  7.50000000e-01,   8.75000000e-01,   1.00000000e+00,
                  0.00000000e+00,   1.25000000e-01,   2.50000000e-01,
                  3.75000000e-01,   5.00000000e-01,   6.25000000e-01,
                  7.50000000e-01,   8.75000000e-01,   1.00000000e+00,
                  0.00000000e+00,   1.25000000e-01,   2.50000000e-01,
                  3.75000000e-01,   5.00000000e-01,   6.25000000e-01,
                  7.50000000e-01,   8.75000000e-01,   1.00000000e+00,
                  0.00000000e+00,   1.25000000e-01,   2.50000000e-01,
                  3.75000000e-01,   5.00000000e-01,   6.25000000e-01,
                  7.50000000e-01,   8.75000000e-01,   1.00000000e+00,
                  0.00000000e+00,   1.25000000e-01,   2.50000000e-01,
                  3.75000000e-01,   5.00000000e-01,   6.25000000e-01,
                  7.50000000e-01,   8.75000000e-01,   1.00000000e+00,
                  0.00000000e+00,   1.25000000e-01,   2.50000000e-01,
                  3.75000000e-01,   5.00000000e-01,   6.25000000e-01,
                  7.50000000e-01,   8.75000000e-01,   1.00000000e+00,
                  0.00000000e+00,   1.25000000e-01,   2.50000000e-01,
                  3.75000000e-01,   5.00000000e-01,   6.25000000e-01,
                  7.50000000e-01,   8.75000000e-01,   1.00000000e+00])),
)





def constant(x, y):
    return np.ones(x.shape, x.dtype)
constant.title = 'Constant'

def xramp(x, y):
    return x
xramp.title = 'X Ramp'

def yramp(x, y):
    return y
yramp.title = 'Y Ramp'

def exponential(x, y):
    x = x*9
    y = y*9
    x1 = x+1.0
    x2 = x-2.0
    x4 = x-4.0
    x7 = x-7.0
    y1 = x+1.0
    y2 = y-2.0
    y3 = y-3.0
    y7 = y-7.0
    f = (0.75 * np.exp(-(x2*x2+y2*y2)/4.0) +
         0.75 * np.exp(-x1*x1/49.0 - y1/10.0) +
         0.5 * np.exp(-(x7*x7 + y3*y3)/4.0) -
         0.2 * np.exp(-x4*x4 -y7*y7))
    return f
exponential.title = 'Exponential and Some Gaussians'

def cliff(x, y):
    f = np.tanh(9.0*(y-x) + 1.0)/9.0
    return f
cliff.title = 'Cliff'

def saddle(x, y):
    f = (1.25 + np.cos(5.4*y))/(6.0 + 6.0*(3*x-1.0)**2)
    return f
saddle.title = 'Saddle'

def gentle(x, y):
    f = np.exp(-5.0625*((x-0.5)**2+(y-0.5)**2))/3.0
    return f
gentle.title = 'Gentle Peak'

def steep(x, y):
    f = np.exp(-20.25*((x-0.5)**2+(y-0.5)**2))/3.0
    return f
steep.title = 'Steep Peak'

def sphere(x, y):
    circle = 64-81*((x-0.5)**2 + (y-0.5)**2)
    f = np.where(circle >= 0, np.sqrt(np.clip(circle,0,100)) - 0.5, 0.0)
    return f
sphere.title = 'Sphere'

def trig(x, y):
    f = 2.0*np.cos(10.0*x)*np.sin(10.0*y) + np.sin(10.0*x*y)
    return f
trig.title = 'Cosines and Sines'

def gauss(x, y):
    x = 5.0-10.0*x
    y = 5.0-10.0*y
    g1 = np.exp(-x*x/2)
    g2 = np.exp(-y*y/2)
    f = g1 + 0.75*g2*(1 + g1)
    return f
gauss.title = 'Gaussian Peak and Gaussian Ridges'

def cloverleaf(x, y):
    ex = np.exp((10.0-20.0*x)/3.0)
    ey = np.exp((10.0-20.0*y)/3.0)
    logitx = 1.0/(1.0+ex)
    logity = 1.0/(1.0+ey)
    f = (((20.0/3.0)**3 * ex*ey)**2 * (logitx*logity)**5 *
        (ex-2.0*logitx)*(ey-2.0*logity))
    return f
cloverleaf.title = 'Cloverleaf'

def cosine_peak(x, y):
    circle = np.hypot(80*x-40.0, 90*y-45.)
    f = np.exp(-0.04*circle) * np.cos(0.15*circle)
    return f
cosine_peak.title = 'Cosine Peak'

allfuncs = [exponential, cliff, saddle, gentle, steep, sphere, trig, gauss, cloverleaf, cosine_peak]


class LinearTester(object):
    name = 'Linear'
    def __init__(self, xrange=(0.0, 1.0), yrange=(0.0, 1.0), nrange=101, npoints=250):
        self.xrange = xrange
        self.yrange = yrange
        self.nrange = nrange
        self.npoints = npoints

        rng = np.random.RandomState(1234567890)
        self.x = rng.uniform(xrange[0], xrange[1], size=npoints)
        self.y = rng.uniform(yrange[0], yrange[1], size=npoints)
        self.tri = Triangulation(self.x, self.y)

    def replace_data(self, dataset):
        self.x = dataset.x
        self.y = dataset.y
        self.tri = Triangulation(self.x, self.y)

    def interpolator(self, func):
        z = func(self.x, self.y)
        return self.tri.linear_extrapolator(z, bbox=self.xrange+self.yrange)

    def plot(self, func, interp=True, plotter='imshow'):
        import matplotlib as mpl
        from matplotlib import pylab as pl
        if interp:
            lpi = self.interpolator(func)
            z = lpi[self.yrange[0]:self.yrange[1]:complex(0,self.nrange),
                    self.xrange[0]:self.xrange[1]:complex(0,self.nrange)]
        else:
            y, x = np.mgrid[self.yrange[0]:self.yrange[1]:complex(0,self.nrange),
                            self.xrange[0]:self.xrange[1]:complex(0,self.nrange)]
            z = func(x, y)

        z = np.where(np.isinf(z), 0.0, z)

        extent = (self.xrange[0], self.xrange[1],
            self.yrange[0], self.yrange[1])
        pl.ioff()
        pl.clf()
        pl.hot() # Some like it hot
        if plotter == 'imshow':
            pl.imshow(np.nan_to_num(z), interpolation='nearest', extent=extent, origin='lower')
        elif plotter == 'contour':
            Y, X = np.ogrid[self.yrange[0]:self.yrange[1]:complex(0,self.nrange),
                self.xrange[0]:self.xrange[1]:complex(0,self.nrange)]
            pl.contour(np.ravel(X), np.ravel(Y), z, 20)
        x = self.x
        y = self.y
        lc = mpl.collections.LineCollection(np.array([((x[i], y[i]), (x[j], y[j]))
            for i, j in self.tri.edge_db]), colors=[(0,0,0,0.2)])
        ax = pl.gca()
        ax.add_collection(lc)

        if interp:
            title = '%s Interpolant' % self.name
        else:
            title = 'Reference'
        if hasattr(func, 'title'):
            pl.title('%s: %s' % (func.title, title))
        else:
            pl.title(title)

        pl.show()
        pl.ion()

class NNTester(LinearTester):
    name = 'Natural Neighbors'
    def interpolator(self, func):
        z = func(self.x, self.y)
        return self.tri.nn_extrapolator(z, bbox=self.xrange+self.yrange)

def plotallfuncs(allfuncs=allfuncs):
    from matplotlib import pylab as pl
    pl.ioff()
    nnt = NNTester(npoints=1000)
    lpt = LinearTester(npoints=1000)
    for func in allfuncs:
        print func.title
        nnt.plot(func, interp=False, plotter='imshow')
        pl.savefig('%s-ref-img.png' % func.func_name)
        nnt.plot(func, interp=True, plotter='imshow')
        pl.savefig('%s-nn-img.png' % func.func_name)
        lpt.plot(func, interp=True, plotter='imshow')
        pl.savefig('%s-lin-img.png' % func.func_name)
        nnt.plot(func, interp=False, plotter='contour')
        pl.savefig('%s-ref-con.png' % func.func_name)
        nnt.plot(func, interp=True, plotter='contour')
        pl.savefig('%s-nn-con.png' % func.func_name)
        lpt.plot(func, interp=True, plotter='contour')
        pl.savefig('%s-lin-con.png' % func.func_name)
    pl.ion()

def plot_dt(tri, colors=None):
    import matplotlib as mpl
    from matplotlib import pylab as pl
    if colors is None:
        colors = [(0,0,0,0.2)]
    lc = mpl.collections.LineCollection(np.array([((tri.x[i], tri.y[i]), (tri.x[j], tri.y[j]))
            for i, j in tri.edge_db]), colors=colors)
    ax = pl.gca()
    ax.add_collection(lc)
    pl.draw_if_interactive()

def plot_vo(tri, colors=None):
    import matplotlib as mpl
    from matplotlib import pylab as pl
    if colors is None:
        colors = [(0,1,0,0.2)]
    lc = mpl.collections.LineCollection(np.array(
        [(tri.circumcenters[i], tri.circumcenters[j])
            for i in xrange(len(tri.circumcenters))
                for j in tri.triangle_neighbors[i] if j != -1]),
        colors=colors)
    ax = pl.gca()
    ax.add_collection(lc)
    pl.draw_if_interactive()

def plot_cc(tri, edgecolor=None):
    import matplotlib as mpl
    from matplotlib import pylab as pl
    if edgecolor is None:
        edgecolor = (0,0,1,0.2)
    dxy = (np.array([(tri.x[i], tri.y[i]) for i,j,k in tri.triangle_nodes])
        - tri.circumcenters)
    r = np.hypot(dxy[:,0], dxy[:,1])
    ax = pl.gca()
    for i in xrange(len(r)):
        p = mpl.patches.Circle(tri.circumcenters[i], r[i], resolution=100, edgecolor=edgecolor,
            facecolor=(1,1,1,0), linewidth=0.2)
        ax.add_patch(p)
    pl.draw_if_interactive()

def quality(func, mesh, interpolator='nn', n=33):
    """Compute a quality factor (the quantity r**2 from TOMS792).

    interpolator must be in ('linear', 'nn').
    """
    fz = func(mesh.x, mesh.y)
    tri = Triangulation(mesh.x, mesh.y)
    intp = getattr(tri, interpolator+'_extrapolator')(fz, bbox=(0.,1.,0.,1.))
    Y, X = np.mgrid[0:1:complex(0,n),0:1:complex(0,n)]
    Z = func(X, Y)
    iz = intp[0:1:complex(0,n),0:1:complex(0,n)]
    #nans = np.isnan(iz)
    #numgood = n*n - np.sum(np.array(nans.flat, np.int32))
    numgood = n*n

    SE = (Z - iz)**2
    SSE = np.sum(SE.flat)
    meanZ = np.sum(Z.flat) / numgood
    SM = (Z - meanZ)**2
    SSM = np.sum(SM.flat)


    r2 = 1.0 - SSE/SSM
    print func.func_name, r2, SSE, SSM, numgood
    return r2

def allquality(interpolator='nn', allfuncs=allfuncs, data=data, n=33):
    results = {}
    kv = data.items()
    kv.sort()
    for name, mesh in kv:
        reslist = results.setdefault(name, [])
        for func in allfuncs:
            reslist.append(quality(func, mesh, interpolator, n))
    return results


def funky():
    x0 = np.array([0.25, 0.3, 0.5, 0.6, 0.6])
    y0 = np.array([0.2, 0.35, 0.0, 0.25, 0.65])
    tx = 0.46
    ty = 0.23
    t0 = Triangulation(x0, y0)
    t1 = Triangulation(np.hstack((x0, [tx])), np.hstack((y0, [ty])))
    return t0, t1

Spamworldpro Mini