-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
set up documentation using Documenter.jl #4
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
/Manifest.toml | ||
docs/build |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
using Documenter | ||
using LatSpec | ||
|
||
makedocs(sitename="LatSpec.jl") |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# LatSpec.jl Documentation | ||
|
||
```@meta | ||
CurrentModule = LatSpec | ||
``` | ||
|
||
```@docs | ||
autocor | ||
autotimeexp | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,46 @@ | ||
# Autocorrelation for a specifig lag | ||
function autocor(x::AbstractVector, lag::Integer) | ||
""" | ||
autocor(x,lag) | ||
|
||
Returns autocorrelation function for a distance of lag, i.e. between values of | ||
```x[t]``` and ```x[t+lag]```. The autocorrelation function is normalized such | ||
that ```autocor(x,0) = 1```. This is equvivalent to the quantity | ||
``\\Gamma_X(t)`` of equation (4.61) in Gattringer/Lang. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Better citation of the book would be nice. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It turns out that there is a dedicated plug-in package for this DocumenterCitations.jl . I had to modify the standard .bib entries generated by inspire for it to work and the bibliography style cannot be customized (yet) (see ali-ramadhan/DocumenterCitations.jl#22 ) but this should do it for now. |
||
""" | ||
function autocor(x, lag) | ||
# (wasteful in terms of allocations but clear) | ||
z = x .- mean(x) | ||
a = sum(z[1+lag:end].*z[1:end-lag])/sum(z.*z) | ||
return a | ||
end | ||
# Autocorrelation for a automatically choosen number of lags | ||
""" | ||
autocor(x) | ||
|
||
Returns autocorrelation function for a set of lags from ``0`` up to the closest | ||
integer to ``10 \\text{log}_{10}(l)``. Here ``l`` is the number of elements in | ||
```x```. | ||
""" | ||
function autocor(x) | ||
lx = length(x) | ||
# heuristic for choosing a suitable number of lags | ||
lags = collect(0:min(lx-1, round(Int,10*log10(lx)))) | ||
a = zeros(eltype(x),length(lags)) | ||
for i in 1:length(lags) | ||
a[i] = autocor(x, lags[i]) | ||
end | ||
return a | ||
end | ||
# Perform exponential fit of autocorrelation and extract characteristic time | ||
""" | ||
autotimeexp(x) | ||
|
||
Returns ``\\max(1,\\tau)`` where ``\\tau`` is the exponential autocorrelation | ||
time of a series of measurements ``x``. This is obtained by fitting the | ||
autocorrelation function to an exponential function of the form | ||
``A \\exp(\\frac{t}{\\tau})``. | ||
""" | ||
function autotimeexp(O) | ||
a = autocor(O) | ||
@. modelτ(x,p) = abs.(p[2])*exp(-x/p[1]) | ||
x = collect(1:length(a)) | ||
c = curve_fit(modelτ, x, a, ones(2)) | ||
τ = c.param[1] | ||
# if autocorrelation time τ is smaller than 1 return just 1 | ||
return max(one(τ),τ) | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any specific reason I miss for calling it
lag
?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is the same name that is being used in StatsBase.jl - we could call it something else. Calling it
time
ort
could be misleading but maybe something likesteps
ortimesteps
?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Okay yes makes sense to stick to something that has already been around for some time.