Skip to content

Commit

Permalink
1.2.5 update
Browse files Browse the repository at this point in the history
Semi-major revision. Updating graphical inversion methods to take pre-existing fig and ax objects. This will make it easier to manipulate the graphs.
  • Loading branch information
bsumlin committed Oct 5, 2017
1 parent ecde343 commit 01e5c2d
Show file tree
Hide file tree
Showing 15 changed files with 236 additions and 72 deletions.
4 changes: 2 additions & 2 deletions PyMieScatt.egg-info/PKG-INFO
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: PyMieScatt
Version: 1.2.2
Version: 1.2.5
Summary: A collection of forward and inverse Mie solving routines based on Bohren and Huffman's Mie Theory derivations.
Home-page: http://air.eece.wustl.edu/people/ben-sumlin/
Author: Benjamin Sumlin
Author-email: bsumlin@wustl.edu
License: GPL
Description: 1.2.2 - Added error bounds as an option for the graphical inversion method. Added new automatic inversion methods Inversion() and Inversion_SD(). Significantly improved the iterative methods.
Description: 1.2.5 - Added error bounds as an option for the graphical inversion method. Added new automatic inversion methods Inversion() and Inversion_SD(). Significantly improved the iterative methods.
Docs are hosted at `ReadTheDocs <http://pymiescatt.readthedocs.io/>`_.
Keywords: Mie Rayleigh scattering absorption extinction light refraction
Platform: UNKNOWN
Expand Down
32 changes: 14 additions & 18 deletions PyMieScatt/Inverse.py
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ def GraphicalInversion(QscaMeasured,QabsMeasured,wavelength,diameter,nMin=1,nMax
else:
return solutionSet,forwardCalculations,solutionErrors

def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,nMin=1,nMax=3,kMin=0.00001,kMax=1,BbackMeasured=None,gridPoints=60,interpolationFactor=2,maxError=0.005,axisOption=0,returnGraphElements=False,annotation=True,SDinset=False):
def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,ndp,nMin=1,nMax=3,kMin=0.00001,kMax=1,BbackMeasured=None,gridPoints=60,interpolationFactor=2,maxError=0.005,axisOption=0,returnGraphElements=False,annotation=True,SDinset=False,fig=None,ax=None):
# http://pymiescatt.readthedocs.io/en/latest/inverse.html#GraphicalInversion_withndp
error = lambda measured,calculated: np.abs((calculated-measured)/measured)
labels = []
Expand Down Expand Up @@ -314,7 +314,7 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,
backError = None

dp = coerceDType(dp)
concentration = coerceDType(concentration)
ndp = coerceDType(ndp)
nRange = np.linspace(nMin,nMax,gridPoints)
kRange = np.logspace(np.log10(kMin),np.log10(kMax),gridPoints)
solutionSet = []
Expand All @@ -325,7 +325,7 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,
a = []
for k in kRange:
m = n+k*1.0j
Bsca,Babs = fastMie_SD(m,wavelength,dp,concentration)
Bsca,Babs = fastMie_SD(m,wavelength,dp,ndp)
s.append(Bsca)
a.append(Babs)
BscaList.append(s)
Expand All @@ -335,9 +335,13 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,

n = zoom(nRange,interpolationFactor)
k = zoom(kRange,interpolationFactor)

fig = plt.figure(figsize=(8.5,8.5))
ax = fig.gca()

if fig is None and ax is None:
fig, ax = plt.subplots()
elif fig is None:
fig = ax.get_figure()
elif ax is None:
ax = fig.gca()

scaLevels = np.array([BscaMeasured])
absLevels = np.array([BabsMeasured])
Expand Down Expand Up @@ -375,7 +379,7 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,

forwardCalculations = []
for s in solutionSet:
_s,_a = fastMie_SD(s,wavelength,dp,concentration)
_s,_a = fastMie_SD(s,wavelength,dp,ndp)
forwardCalculations.append([_s,_a])
solutionErrors = []
for f in forwardCalculations:
Expand Down Expand Up @@ -406,7 +410,6 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,
ax.set_xlabel('n',fontsize=16)
ax.set_ylabel('k',fontsize=16)

plt.title("Graphical Solution for λ={w} nm".format(w=wavelength),fontsize=18)

ax.set_xlim((np.min(nRange),np.max(nRange)))
ax.set_ylim((np.min(kRange),np.max(kRange)))
Expand Down Expand Up @@ -448,16 +451,8 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,
# lines.append(backChart.collections[0])
# graphelements.append(backChart)

if(SDinset):
left,bottom,width,height = [0.55,0.5,0.3,0.25]
ax2=fig.add_axes([left,bottom,width,height],zorder=5)
ax2.semilogx(dp,concentration,color='k')
ax2.set_xlabel("Diameter (nm)")
ax2.set_ylabel("Concentration $\mathregular{(cm^{-3})}$")
ax2.patch.set_alpha(0.85)
ax2.tick_params(which='both',direction='in')
if returnGraphElements:
return solutionSet,forwardCalculations,solutionErrors,(fig,ax,st,scaChart,absChart,solutions)
return solutionSet,forwardCalculations,solutionErrors,fig,ax,scaChart,absChart,solutions
else:
return solutionSet,forwardCalculations,solutionErrors

Expand Down Expand Up @@ -691,11 +686,12 @@ def fastMie_SD(m, wavelength, dp, ndp):
_length = np.size(dp)
Q_sca = np.zeros(_length)
Q_abs = np.zeros(_length)
Q_back = np.zeros(_length)

aSDn = np.pi*((dp/2)**2)*ndp*(1e-6)

for i in range(_length):
Q_sca[i],Q_abs[i],_ = fastMieQ(m,wavelength,dp[i])
Q_sca[i],Q_abs[i],Q_back[i] = fastMieQ(m,wavelength,dp[i])

Bsca = trapz(Q_sca*aSDn)
Babs = trapz(Q_abs*aSDn)
Expand Down
28 changes: 15 additions & 13 deletions PyMieScatt/Mie.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import numpy as np
from scipy.special import jv, yv
from scipy.integrate import trapz
from scipy.ndimage import zoom
import warnings

def coerceDType(d):
Expand Down Expand Up @@ -184,24 +185,25 @@ def LowFrequencyMie_ab(m,x):
bn = np.append(b1,b2)
return an,bn

def Mie_withSizeDistribution(m, wavelength, sizeDistributionDiameterBins, sizeDistribution, asDict=False):
# http://pymiescatt.readthedocs.io/en/latest/forward.html#MieQ_withSizeDistribution
sizeDistributionDiameterBins = coerceDType(sizeDistributionDiameterBins)
sizeDistribution = coerceDType(sizeDistribution)
_length = np.size(sizeDistributionDiameterBins)
def Mie_SD(m, wavelength, dp, ndp, interpolate=False, asDict=False):
# http://pymiescatt.readthedocs.io/en/latest/forward.html#Mie_SD
dp = coerceDType(dp)
ndp = coerceDType(ndp)
_length = np.size(dp)
Q_ext = np.zeros(_length)
Q_sca = np.zeros(_length)
Q_abs = np.zeros(_length)
Q_pr = np.zeros(_length)
Q_back = np.zeros(_length)
Q_ratio = np.zeros(_length)
g = np.zeros(_length)

# scaling of 1e-6 to cast in units of inverse megameters
aSDn = np.pi*((sizeDistributionDiameterBins/2)**2)*sizeDistribution*(1e-6)

# scaling of 1e-6 to cast in units of inverse megameters - see docs
aSDn = np.pi*((dp/2)**2)*ndp*(1e-6)
# _logdp = np.log10(dp)

for i in range(_length):
Q_ext[i], Q_sca[i], Q_abs[i], g[i], Q_pr[i], Q_back[i], Q_ratio[i] = MieQ(m,wavelength,sizeDistributionDiameterBins[i])
Q_ext[i], Q_sca[i], Q_abs[i], g[i], Q_pr[i], Q_back[i], Q_ratio[i] = MieQ(m,wavelength,dp[i])

Bext = trapz(Q_ext*aSDn)
Bsca = trapz(Q_sca*aSDn)
Expand Down Expand Up @@ -255,8 +257,8 @@ def ScatteringFunction(m, wavelength, diameter, minAngle=0, maxAngle=180, angula
measure = (4*np.pi/wavelength)*np.sin(measure/2)*(diameter/2)
return measure,SL,SR,SU

def SF_withSizeDistribution(m, wavelength, ndp, dp, minAngle=0, maxAngle=180, angularResolution=0.5, space='theta', normed=False):
# http://pymiescatt.readthedocs.io/en/latest/forward.html#SF_withSizeDistribution
def SF_SD(m, wavelength, ndp, dp, minAngle=0, maxAngle=180, angularResolution=0.5, space='theta', normed=False):
# http://pymiescatt.readthedocs.io/en/latest/forward.html#SF_SD
_steps = int(1+maxAngle/angularResolution)
ndp = coerceDType(ndp)
dp = coerceDType(dp)
Expand Down Expand Up @@ -372,7 +374,7 @@ def MieQ_withSizeParameterRange(m, xRange=(1,10), nx=1000, logX=False):
qratio = np.array([q[6] for q in _qD])
return xValues, qext, qsca, qabs, g, qpr, qback, qratio

def Mie_Lognormal(m,wavelength,geoStdDev,geoMean,numberOfParticles,numberOfBins=1000,lower=1,upper=1000,gamma=[1],returnDistribution=False,decomposeMultimodal=False,asDict=False):
def Mie_Lognormal(m,wavelength,geoStdDev,geoMean,numberOfParticles,numberOfBins=10000,lower=1,upper=1000,gamma=[1],returnDistribution=False,decomposeMultimodal=False,asDict=False):
# http://pymiescatt.readthedocs.io/en/latest/forward.html#Mie_Lognormal
ithPart = lambda gammai, dp, dpgi, sigmagi: (gammai/(np.sqrt(2*np.pi)*np.log(sigmagi)*dp))*np.exp(-(np.log(dp)-np.log(dpgi))**2/(2*np.log(sigmagi)**2))
dp = np.logspace(np.log10(lower),np.log10(upper),numberOfBins)
Expand All @@ -399,7 +401,7 @@ def Mie_Lognormal(m,wavelength,geoStdDev,geoMean,numberOfParticles,numberOfBins=
ndp = numberOfParticles*ithPart(1,dp,geoMean,geoStdDev)
if ndp[-1]>np.max(ndp)/100 or ndp[0]>np.max(ndp)/100:
warnings.warn("Warning: distribution may not be compact on the specified interval. Consider using a higher upper bound.")
Bext, Bsca, Babs, bigG, Bpr, Bback, Bratio = Mie_withSizeDistribution(m,wavelength,dp,ndp)
Bext, Bsca, Babs, bigG, Bpr, Bback, Bratio = Mie_SD(m,wavelength,dp,ndp)
if returnDistribution:
if decomposeMultimodal:
if asDict==True:
Expand Down
4 changes: 2 additions & 2 deletions PyMieScatt/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# A collection of forward and inverse Mie routines, q-Space analysis tools, and structure factor tools

from PyMieScatt.Mie import MieQ, RayleighMieQ, LowFrequencyMieQ, Mie_withSizeDistribution, ScatteringFunction, SF_withSizeDistribution, MatrixElements, MieQ_withDiameterRange, MieQ_withWavelengthRange, MieQ_withSizeParameterRange, Mie_Lognormal
from PyMieScatt.Mie import MieQ, RayleighMieQ, LowFrequencyMieQ, Mie_SD, ScatteringFunction, SF_SD, MatrixElements, MieQ_withDiameterRange, MieQ_withWavelengthRange, MieQ_withSizeParameterRange, Mie_Lognormal
from PyMieScatt.CoreShell import MieQCoreShell, CoreShellScatteringFunction, CoreShellMatrixElements
from PyMieScatt.Inverse import GraphicalInversion, GraphicalInversion_SD, IterativeInversion, IterativeInversion_SD, Inversion, Inversion_SD
from PyMieScatt.Inverse import GraphicalInversion, GraphicalInversion_SD, IterativeInversion, IterativeInversion_SD, Inversion, Inversion_SD, fastMieQ, fastMie_SD
from PyMieScatt._version import __version__
2 changes: 1 addition & 1 deletion PyMieScatt/_version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "1.2.2"
__version__ = "1.2.5"
32 changes: 14 additions & 18 deletions build/lib/PyMieScatt/Inverse.py
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ def GraphicalInversion(QscaMeasured,QabsMeasured,wavelength,diameter,nMin=1,nMax
else:
return solutionSet,forwardCalculations,solutionErrors

def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,nMin=1,nMax=3,kMin=0.00001,kMax=1,BbackMeasured=None,gridPoints=60,interpolationFactor=2,maxError=0.005,axisOption=0,returnGraphElements=False,annotation=True,SDinset=False):
def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,ndp,nMin=1,nMax=3,kMin=0.00001,kMax=1,BbackMeasured=None,gridPoints=60,interpolationFactor=2,maxError=0.005,axisOption=0,returnGraphElements=False,annotation=True,SDinset=False,fig=None,ax=None):
# http://pymiescatt.readthedocs.io/en/latest/inverse.html#GraphicalInversion_withndp
error = lambda measured,calculated: np.abs((calculated-measured)/measured)
labels = []
Expand Down Expand Up @@ -314,7 +314,7 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,
backError = None

dp = coerceDType(dp)
concentration = coerceDType(concentration)
ndp = coerceDType(ndp)
nRange = np.linspace(nMin,nMax,gridPoints)
kRange = np.logspace(np.log10(kMin),np.log10(kMax),gridPoints)
solutionSet = []
Expand All @@ -325,7 +325,7 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,
a = []
for k in kRange:
m = n+k*1.0j
Bsca,Babs = fastMie_SD(m,wavelength,dp,concentration)
Bsca,Babs = fastMie_SD(m,wavelength,dp,ndp)
s.append(Bsca)
a.append(Babs)
BscaList.append(s)
Expand All @@ -335,9 +335,13 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,

n = zoom(nRange,interpolationFactor)
k = zoom(kRange,interpolationFactor)

fig = plt.figure(figsize=(8.5,8.5))
ax = fig.gca()

if fig is None and ax is None:
fig, ax = plt.subplots()
elif fig is None:
fig = ax.get_figure()
elif ax is None:
ax = fig.gca()

scaLevels = np.array([BscaMeasured])
absLevels = np.array([BabsMeasured])
Expand Down Expand Up @@ -375,7 +379,7 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,

forwardCalculations = []
for s in solutionSet:
_s,_a = fastMie_SD(s,wavelength,dp,concentration)
_s,_a = fastMie_SD(s,wavelength,dp,ndp)
forwardCalculations.append([_s,_a])
solutionErrors = []
for f in forwardCalculations:
Expand Down Expand Up @@ -406,7 +410,6 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,
ax.set_xlabel('n',fontsize=16)
ax.set_ylabel('k',fontsize=16)

plt.title("Graphical Solution for λ={w} nm".format(w=wavelength),fontsize=18)

ax.set_xlim((np.min(nRange),np.max(nRange)))
ax.set_ylim((np.min(kRange),np.max(kRange)))
Expand Down Expand Up @@ -448,16 +451,8 @@ def GraphicalInversion_SD(BscaMeasured,BabsMeasured,wavelength,dp,concentration,
# lines.append(backChart.collections[0])
# graphelements.append(backChart)

if(SDinset):
left,bottom,width,height = [0.55,0.5,0.3,0.25]
ax2=fig.add_axes([left,bottom,width,height],zorder=5)
ax2.semilogx(dp,concentration,color='k')
ax2.set_xlabel("Diameter (nm)")
ax2.set_ylabel("Concentration $\mathregular{(cm^{-3})}$")
ax2.patch.set_alpha(0.85)
ax2.tick_params(which='both',direction='in')
if returnGraphElements:
return solutionSet,forwardCalculations,solutionErrors,(fig,ax,st,scaChart,absChart,solutions)
return solutionSet,forwardCalculations,solutionErrors,fig,ax,scaChart,absChart,solutions
else:
return solutionSet,forwardCalculations,solutionErrors

Expand Down Expand Up @@ -691,11 +686,12 @@ def fastMie_SD(m, wavelength, dp, ndp):
_length = np.size(dp)
Q_sca = np.zeros(_length)
Q_abs = np.zeros(_length)
Q_back = np.zeros(_length)

aSDn = np.pi*((dp/2)**2)*ndp*(1e-6)

for i in range(_length):
Q_sca[i],Q_abs[i],_ = fastMieQ(m,wavelength,dp[i])
Q_sca[i],Q_abs[i],Q_back[i] = fastMieQ(m,wavelength,dp[i])

Bsca = trapz(Q_sca*aSDn)
Babs = trapz(Q_abs*aSDn)
Expand Down
28 changes: 15 additions & 13 deletions build/lib/PyMieScatt/Mie.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import numpy as np
from scipy.special import jv, yv
from scipy.integrate import trapz
from scipy.ndimage import zoom
import warnings

def coerceDType(d):
Expand Down Expand Up @@ -184,24 +185,25 @@ def LowFrequencyMie_ab(m,x):
bn = np.append(b1,b2)
return an,bn

def Mie_withSizeDistribution(m, wavelength, sizeDistributionDiameterBins, sizeDistribution, asDict=False):
# http://pymiescatt.readthedocs.io/en/latest/forward.html#MieQ_withSizeDistribution
sizeDistributionDiameterBins = coerceDType(sizeDistributionDiameterBins)
sizeDistribution = coerceDType(sizeDistribution)
_length = np.size(sizeDistributionDiameterBins)
def Mie_SD(m, wavelength, dp, ndp, interpolate=False, asDict=False):
# http://pymiescatt.readthedocs.io/en/latest/forward.html#Mie_SD
dp = coerceDType(dp)
ndp = coerceDType(ndp)
_length = np.size(dp)
Q_ext = np.zeros(_length)
Q_sca = np.zeros(_length)
Q_abs = np.zeros(_length)
Q_pr = np.zeros(_length)
Q_back = np.zeros(_length)
Q_ratio = np.zeros(_length)
g = np.zeros(_length)

# scaling of 1e-6 to cast in units of inverse megameters
aSDn = np.pi*((sizeDistributionDiameterBins/2)**2)*sizeDistribution*(1e-6)

# scaling of 1e-6 to cast in units of inverse megameters - see docs
aSDn = np.pi*((dp/2)**2)*ndp*(1e-6)
# _logdp = np.log10(dp)

for i in range(_length):
Q_ext[i], Q_sca[i], Q_abs[i], g[i], Q_pr[i], Q_back[i], Q_ratio[i] = MieQ(m,wavelength,sizeDistributionDiameterBins[i])
Q_ext[i], Q_sca[i], Q_abs[i], g[i], Q_pr[i], Q_back[i], Q_ratio[i] = MieQ(m,wavelength,dp[i])

Bext = trapz(Q_ext*aSDn)
Bsca = trapz(Q_sca*aSDn)
Expand Down Expand Up @@ -255,8 +257,8 @@ def ScatteringFunction(m, wavelength, diameter, minAngle=0, maxAngle=180, angula
measure = (4*np.pi/wavelength)*np.sin(measure/2)*(diameter/2)
return measure,SL,SR,SU

def SF_withSizeDistribution(m, wavelength, ndp, dp, minAngle=0, maxAngle=180, angularResolution=0.5, space='theta', normed=False):
# http://pymiescatt.readthedocs.io/en/latest/forward.html#SF_withSizeDistribution
def SF_SD(m, wavelength, ndp, dp, minAngle=0, maxAngle=180, angularResolution=0.5, space='theta', normed=False):
# http://pymiescatt.readthedocs.io/en/latest/forward.html#SF_SD
_steps = int(1+maxAngle/angularResolution)
ndp = coerceDType(ndp)
dp = coerceDType(dp)
Expand Down Expand Up @@ -372,7 +374,7 @@ def MieQ_withSizeParameterRange(m, xRange=(1,10), nx=1000, logX=False):
qratio = np.array([q[6] for q in _qD])
return xValues, qext, qsca, qabs, g, qpr, qback, qratio

def Mie_Lognormal(m,wavelength,geoStdDev,geoMean,numberOfParticles,numberOfBins=1000,lower=1,upper=1000,gamma=[1],returnDistribution=False,decomposeMultimodal=False,asDict=False):
def Mie_Lognormal(m,wavelength,geoStdDev,geoMean,numberOfParticles,numberOfBins=10000,lower=1,upper=1000,gamma=[1],returnDistribution=False,decomposeMultimodal=False,asDict=False):
# http://pymiescatt.readthedocs.io/en/latest/forward.html#Mie_Lognormal
ithPart = lambda gammai, dp, dpgi, sigmagi: (gammai/(np.sqrt(2*np.pi)*np.log(sigmagi)*dp))*np.exp(-(np.log(dp)-np.log(dpgi))**2/(2*np.log(sigmagi)**2))
dp = np.logspace(np.log10(lower),np.log10(upper),numberOfBins)
Expand All @@ -399,7 +401,7 @@ def Mie_Lognormal(m,wavelength,geoStdDev,geoMean,numberOfParticles,numberOfBins=
ndp = numberOfParticles*ithPart(1,dp,geoMean,geoStdDev)
if ndp[-1]>np.max(ndp)/100 or ndp[0]>np.max(ndp)/100:
warnings.warn("Warning: distribution may not be compact on the specified interval. Consider using a higher upper bound.")
Bext, Bsca, Babs, bigG, Bpr, Bback, Bratio = Mie_withSizeDistribution(m,wavelength,dp,ndp)
Bext, Bsca, Babs, bigG, Bpr, Bback, Bratio = Mie_SD(m,wavelength,dp,ndp)
if returnDistribution:
if decomposeMultimodal:
if asDict==True:
Expand Down
4 changes: 2 additions & 2 deletions build/lib/PyMieScatt/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# A collection of forward and inverse Mie routines, q-Space analysis tools, and structure factor tools

from PyMieScatt.Mie import MieQ, RayleighMieQ, LowFrequencyMieQ, Mie_withSizeDistribution, ScatteringFunction, SF_withSizeDistribution, MatrixElements, MieQ_withDiameterRange, MieQ_withWavelengthRange, MieQ_withSizeParameterRange, Mie_Lognormal
from PyMieScatt.Mie import MieQ, RayleighMieQ, LowFrequencyMieQ, Mie_SD, ScatteringFunction, SF_SD, MatrixElements, MieQ_withDiameterRange, MieQ_withWavelengthRange, MieQ_withSizeParameterRange, Mie_Lognormal
from PyMieScatt.CoreShell import MieQCoreShell, CoreShellScatteringFunction, CoreShellMatrixElements
from PyMieScatt.Inverse import GraphicalInversion, GraphicalInversion_SD, IterativeInversion, IterativeInversion_SD, Inversion, Inversion_SD
from PyMieScatt.Inverse import GraphicalInversion, GraphicalInversion_SD, IterativeInversion, IterativeInversion_SD, Inversion, Inversion_SD, fastMieQ, fastMie_SD
from PyMieScatt._version import __version__
2 changes: 1 addition & 1 deletion build/lib/PyMieScatt/_version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "1.2.2"
__version__ = "1.2.5"
Binary file removed dist/PyMieScatt-1.2.2-py3-none-any.whl
Binary file not shown.
Binary file removed dist/PyMieScatt-1.2.2.tar.gz
Binary file not shown.
Binary file added dist/PyMieScatt-1.2.5-py3-none-any.whl
Binary file not shown.
Binary file added dist/PyMieScatt-1.2.5.tar.gz
Binary file not shown.

0 comments on commit 01e5c2d

Please sign in to comment.