Python scipy.interpolate.PchipInterpolator() Examples
The following are 8
code examples of scipy.interpolate.PchipInterpolator().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
scipy.interpolate
, or try the search function
.
Example #1
Source File: PlanetPhysicalModel.py From EXOSIMS with BSD 3-Clause "New" or "Revised" License | 6 votes |
def __init__(self, cachedir=None, **specs): #start the outspec self._outspec = {} # cache directory self.cachedir = get_cache_dir(cachedir) self._outspec['cachedir'] = self.cachedir specs['cachedir'] = self.cachedir # load the vprint function (same line in all prototype module constructors) self.vprint = vprint(specs.get('verbose', True)) #Define Phase Function Inverse betas = np.linspace(start=0.,stop=np.pi,num=1000,endpoint=True)*u.rad Phis = self.calc_Phi(betas) self.betaFunction = PchipInterpolator(-Phis,betas) #the -Phis ensure the function monotonically increases return
Example #2
Source File: PlanetPhysicalModel.py From EXOSIMS with BSD 3-Clause "New" or "Revised" License | 5 votes |
def calc_beta(self,Phi): """ Calculates the Phase angle based on the assumed planet phase function Args: Phi (float) - Phase angle function value ranging from 0 to 1 Returns: beta (float) - Phase angle from 0 rad to pi rad """ beta = self.betaFunction(-Phi) #Note: the - is because betaFunction uses -Phi when calculating the Phase Function #This is because PchipInterpolator used requires monotonically increasing function return beta
Example #3
Source File: helpers.py From hypertools with MIT License | 5 votes |
def interp_array(arr,interp_val=10): x=np.arange(0, len(arr), 1) xx=np.arange(0, len(arr)-1, 1/interp_val) q=pchip(x,arr) return q(xx)
Example #4
Source File: geometry.py From AeroSandbox with MIT License | 5 votes |
def repanel_current_airfoil(self, n_points_per_side=100): # Returns a repaneled version of the airfoil with cosine-spaced coordinates on the upper and lower surfaces. # Inputs: # # n_points_per_side is the number of points PER SIDE (upper and lower) of the airfoil. 100 is a good number. # Notes: The number of points defining the final airfoil will be n_points_per_side*2-1, # since one point (the leading edge point) is shared by both the upper and lower surfaces. upper_original_coors = self.upper_coordinates() # Note: includes leading edge point, be careful about duplicates lower_original_coors = self.lower_coordinates() # Note: includes leading edge point, be careful about duplicates # Find distances between coordinates, assuming linear interpolation upper_distances_between_points = np.sqrt( np.power(upper_original_coors[:-1, 0] - upper_original_coors[1:, 0], 2) + np.power(upper_original_coors[:-1, 1] - upper_original_coors[1:, 1], 2) ) lower_distances_between_points = np.sqrt( np.power(lower_original_coors[:-1, 0] - lower_original_coors[1:, 0], 2) + np.power(lower_original_coors[:-1, 1] - lower_original_coors[1:, 1], 2) ) upper_distances_from_TE = np.hstack((0, np.cumsum(upper_distances_between_points))) lower_distances_from_LE = np.hstack((0, np.cumsum(lower_distances_between_points))) upper_distances_from_TE_normalized = upper_distances_from_TE / upper_distances_from_TE[-1] lower_distances_from_LE_normalized = lower_distances_from_LE / lower_distances_from_LE[-1] # Generate a cosine-spaced list of points from 0 to 1 s = cosspace(n_points=n_points_per_side) x_upper_func = sp_interp.PchipInterpolator(x=upper_distances_from_TE_normalized, y=upper_original_coors[:, 0]) y_upper_func = sp_interp.PchipInterpolator(x=upper_distances_from_TE_normalized, y=upper_original_coors[:, 1]) x_lower_func = sp_interp.PchipInterpolator(x=lower_distances_from_LE_normalized, y=lower_original_coors[:, 0]) y_lower_func = sp_interp.PchipInterpolator(x=lower_distances_from_LE_normalized, y=lower_original_coors[:, 1]) x_coors = np.hstack((x_upper_func(s), x_lower_func(s)[1:])) y_coors = np.hstack((y_upper_func(s), y_lower_func(s)[1:])) coordinates = np.column_stack((x_coors, y_coors)) self.coordinates = coordinates
Example #5
Source File: particle_size_distribution.py From fluids with MIT License | 5 votes |
def __init__(self, ds, fractions, order=3, monotonic=True): self.order = order self.monotonic = monotonic self.parameters = {} ds = list(ds) fractions = list(fractions) if len(ds) == len(fractions)+1: # size classes, the last point will be zero fractions.insert(0, 0.0) self.d_minimum = min(ds) elif ds[0] != 0: ds = [0] + ds if len(ds) != len(fractions): fractions = [0] + fractions self.d_minimum = 0.0 self.ds = ds self.fractions = fractions self.d_excessive = max(ds) self.fraction_cdf = cumsum(fractions) if self.monotonic: from scipy.interpolate import PchipInterpolator globals()['PchipInterpolator'] = PchipInterpolator self.cdf_spline = PchipInterpolator(ds, self.fraction_cdf, extrapolate=True) self.pdf_spline = PchipInterpolator(ds, self.fraction_cdf, extrapolate=True).derivative(1) else: from scipy.interpolate import UnivariateSpline globals()['UnivariateSpline'] = UnivariateSpline self.cdf_spline = UnivariateSpline(ds, self.fraction_cdf, ext=3, s=0) self.pdf_spline = UnivariateSpline(ds, self.fraction_cdf, ext=3, s=0).derivative(1) # The pdf basis integral splines will be stored here self.basis_integrals = {}
Example #6
Source File: particle_size_distribution.py From fluids with MIT License | 5 votes |
def _pdf_basis_integral(self, d, n): # there are slight errors with this approach - but they are OK to # ignore. # DO NOT evaluate the first point as it leads to inf values; just set # it to zero from fluids.numerics import numpy as np if n not in self.basis_integrals: ds = np.array(self.ds[1:]) pdf_vals = self.pdf_spline(ds) basis_integral = ds**n*pdf_vals if self.monotonic: self.basis_integrals[n] = PchipInterpolator(ds, basis_integral, extrapolate=True).antiderivative(1) else: self.basis_integrals[n] = UnivariateSpline(ds, basis_integral, ext=3, s=0).antiderivative(n=1) return max(float(self.basis_integrals[n](d)), 0.0)
Example #7
Source File: interpolators.py From PCWG with MIT License | 5 votes |
def __init__(self, x, y, cutOutWindSpeed): self.first_value = x[0] self.last_value = x[-1] self.interpolator = interpolate.PchipInterpolator(x,y,extrapolate =False) self.cutOutWindSpeed = cutOutWindSpeed
Example #8
Source File: geometry.py From AeroSandbox with MIT License | 4 votes |
def get_repaneled_airfoil(self, n_points_per_side=100): # Returns a repaneled version of the airfoil with cosine-spaced coordinates on the upper and lower surfaces. # Inputs: # # n_points_per_side is the number of points PER SIDE (upper and lower) of the airfoil. 100 is a good number. # Notes: The number of points defining the final airfoil will be n_points_per_side*2-1, # since one point (the leading edge point) is shared by both the upper and lower surfaces. upper_original_coors = self.upper_coordinates() # Note: includes leading edge point, be careful about duplicates lower_original_coors = self.lower_coordinates() # Note: includes leading edge point, be careful about duplicates # Find distances between coordinates, assuming linear interpolation upper_distances_between_points = np.sqrt( np.power(upper_original_coors[:-1, 0] - upper_original_coors[1:, 0], 2) + np.power(upper_original_coors[:-1, 1] - upper_original_coors[1:, 1], 2) ) lower_distances_between_points = np.sqrt( np.power(lower_original_coors[:-1, 0] - lower_original_coors[1:, 0], 2) + np.power(lower_original_coors[:-1, 1] - lower_original_coors[1:, 1], 2) ) upper_distances_from_TE = np.hstack((0, np.cumsum(upper_distances_between_points))) lower_distances_from_LE = np.hstack((0, np.cumsum(lower_distances_between_points))) upper_distances_from_TE_normalized = upper_distances_from_TE / upper_distances_from_TE[-1] lower_distances_from_LE_normalized = lower_distances_from_LE / lower_distances_from_LE[-1] # Generate a cosine-spaced list of points from 0 to 1 s = cosspace(n_points=n_points_per_side) x_upper_func = sp_interp.PchipInterpolator(x=upper_distances_from_TE_normalized, y=upper_original_coors[:, 0]) y_upper_func = sp_interp.PchipInterpolator(x=upper_distances_from_TE_normalized, y=upper_original_coors[:, 1]) x_lower_func = sp_interp.PchipInterpolator(x=lower_distances_from_LE_normalized, y=lower_original_coors[:, 0]) y_lower_func = sp_interp.PchipInterpolator(x=lower_distances_from_LE_normalized, y=lower_original_coors[:, 1]) x_coors = np.hstack((x_upper_func(s), x_lower_func(s)[1:])) y_coors = np.hstack((y_upper_func(s), y_lower_func(s)[1:])) coordinates = np.column_stack((x_coors, y_coors)) # Make a new airfoil with the coordinates name = self.name + ", repaneled to " + str(n_points_per_side) + " pts" new_airfoil = Airfoil(name=name, coordinates=coordinates, repanel=False) return new_airfoil