Basic ExampleΒΆ
This example is a basic introduction to using pydftools
. It mimics
example 1 of dftools
.
In [1]:
# Import relevant libraries
%matplotlib inline
import pydftools as df
import time
# Make figures a little bigger in the notebook
import matplotlib as mpl
mpl.rcParams['figure.dpi'] = 120
# For displaying equations
from IPython.display import display, Markdown
Choose some parameters to use throughout
In [2]:
n = 1000
seed = 1234
sigma = 0.5
model =df.model.Schechter()
p_true = model.p0
Generate mock data with observing errors:
In [3]:
data, selection, model, other = df.mockdata(n = n, seed = seed, sigma = sigma, model=model, verbose=True)
Number of sources in the mock survey (expected): 1000.000
Number of sources in the mock survey (selected): 1000
Create a fitting object (the fit is not performed until the fit
object is accessed):
In [4]:
survey = df.DFFit(data=data, selection=selection, model=model)
Perform the fit and get the best set of parameters:
In [5]:
start = time.time()
print(survey.fit.p_best)
print("Time for fitting: ", time.time() - start, " seconds")
[ -2.04370588 11.12540248 -1.29867552]
Time for fitting: 0.47102880477905273 seconds
Plot the covariances:
In [6]:
fig = df.plotting.plotcov([survey], p_true=p_true, figsize=1.3)
Plot the mass function itself:
In [7]:
fig, ax = df.mfplot(survey, xlim=(1e7,2e12), ylim=(1e-4,2), p_true = p_true, bin_xmin=7.5, bin_xmax=12)
Write out fitted parameters with (Gaussian) uncertainties:
In [8]:
display(Markdown(survey.fit_summary(format_for_notebook=True)))
\(\frac{dN}{dVdx} = \log(10) \phi_\star \mu^{\alpha+1} \exp(-\mu)\),
where
\(\mu = 10^{x - \log_{10} M_\star}\)\(\log_{10} \phi_\star\)
= -2.044 (+-0.066)\(\log_{10} M_\star\) = 11.125
(+-0.082)\(\alpha\) = -1.299 (+-0.021)