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.
using AdvancedMH
using ArraysOfArrays
using CairoMakie
using DiffEqNoiseProcess
using Distributions
using StochasticDiffEq
using Turing
using Random
struct CrankNicolsonProposal{P,T} <: AdvancedMH.Proposal{P}
@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