Skip to content

Instantly share code, notes, and snippets.

View devmotion's full-sized avatar
🦖

David Widmann devmotion

🦖
View GitHub Profile
@devmotion
devmotion / typemacros.jl
Last active August 2, 2018 23:49
Julia macros
using MacroTools: namify
using Base.Meta: isexpr
## Utilities
# Split struct definition (neglecting constructors)
function splitstruct(structdef)
# Split type definition
isexpr(structdef, :struct, 3) || error("Not a type definition:", structdef)
@devmotion
devmotion / benchmark.jl
Created August 5, 2018 14:29
Interpolation benchmarks
using MuladdMacro, EllipsisNotation, BenchmarkTools
# In place
@generated function f_loop!(out, dt, y, k, b, idxs::Nothing, ::Type{Val{N}}) where N
sumexpr = :(+($((:(k[$i][idx]*b[$i]) for i in 1:N)...)))
quote
@muladd @inbounds for idx in eachindex(out)
out[idx] = y[idx] + dt*$sumexpr
end
@devmotion
devmotion / blackboxoptim.jl
Last active July 31, 2019 00:42
DDE parameter estimation
using DelayDiffEq, DiffEqParamEstim, BlackBoxOptim, DataFrames, LsqFit
using Plots
gr()
include("importData.jl")
include("plot.jl")
# import data from the path, in which:
# pop: population data
# g1, g2: g1 and g2 data
@devmotion
devmotion / demo.jl
Last active November 24, 2019 17:05
Elliptical slice sampling
using Turing
using StatsPlots
using Random
using Statistics
function demo(N::Int; n::Int = 10)
# observation noise
σ² = 0.3
@devmotion
devmotion / examples.jl
Last active December 19, 2019 22:42
ESS examples
using Turing
using StatsPlots
using Random
using Statistics
function demo(N::Int; n::Int = 10)
# observation noise
σ² = 0.3
using Turing
using Turing.RandomMeasures
using Random
function stickbreaking(rpm = DirichletProcess(0.25))
# Data
data = [-2,2,-1.5,1.5]
# Base distribution
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@devmotion
devmotion / ot.jl
Created May 24, 2021 19:09
Discrete OT
using Distributions
using SparseArrays
using LinearAlgebra
using StatsBase
function _ot_cost_plan(c, μ::DiscreteNonParametric, ν::DiscreteNonParametric; get=:plan)
len_μ = length(μ.p)
len_ν = length(ν.p)
wi = μ.p[1]
wj = ν.p[1]
using BenchmarkTools
using Distances
using Distributions
using StatsBase
using LinearAlgebra
using SparseArrays
function f(
c, μ::DiscreteNonParametric, ν::DiscreteNonParametric, plan::SparseMatrixCSC
julia> using DynamicPPL
julia> @model function demo4(n, ::Type{TV}=Vector{Float64}) where {TV}
m ~ Normal()
x = TV(undef, n)
@show __varinfo__
for i in eachindex(x)
x[i] ~ Normal(m, 1.0)
end
end