Skip to content

Instantly share code, notes, and snippets.


Daniel Harasim dharasim

View GitHub Profile
dharasim / unzip_in_julia.jl
Last active March 22, 2018 13:25
generic unzip function in julia
View unzip_in_julia.jl
unzip an iterable object of indexable objects
function unzip(iter)
ntuple(length(first(iter))) do i
map(iter) do indexable
getindex(indexable, i)
View compounds.jl
using StatsFuns.RFunctions: betarand, gammarand
using LogProbs
function categorical_sample(tokens, weights)
x = rand() * sum(weights)
cum_weights = zero(eltype(weights))
for (t, w) in zip(tokens, weights)
cum_weights += w
if cum_weights > x
return t
View using_seaborn_in_julia.jl
import Seaborn
import Pandas
# convert julia dataframe into a pandas dataframe
panda(df) = Pandas.DataFrame(Dict(n => df[n] for n in names(df)))
dharasim / fibs.jl
Created August 13, 2018 09:15
Fibs iterator in Julia v1.0
View fibs.jl
using Base.Iterators: take
import Base: iterate, IteratorSize, eltype
struct Fibs end
iterate(::Fibs, (i, j) = (1, 1)) = i, (j, i+j)
IteratorSize(::Type{Fibs}) = Base.IsInfinite()
eltype(::Type{Fibs}) = Int
# collect the first ten fibs in an array
View julia_tools.jl
partial(f, args...) = let args = args; (more...) -> f(args..., more...) end
dharasim / example_plot.jl
Last active December 12, 2018 11:31
VegaLite plots in Julia
View example_plot.jl
df = DataFrame(x=randn(500), y= randn(500))
df |> vlplot(
mark = :point,
encoding = (
x = (field=:x, typ=:quantitative),
y = (field=:y, typ=:quantitative)
dharasim / CompoundDistributions.jl
Created February 7, 2019 15:28
Compound Distributions in Julia
View CompoundDistributions.jl
module CompoundDistributions
using StatsFuns.RFunctions: betarand, gammarand
using SpecialFunctions: lbeta
using LogProbs
# distribution types
export BetaBern, DirMul, DirCat, UniCat, CatDist, ChineseRest
# conditional distribution type
dharasim / index.html
Last active February 19, 2019 18:14
Pitch Class Barplot
View index.html
<!doctype html>
<html lang="en">
<meta charset="utf-8">
<title>Vega Lite Barplot</title>
<!-- Import Vega 4 & Vega-Lite 3 (does not have to be from CDN) -->
<script src=""></script>
<script src=""></script>
dharasim /
Created April 11, 2019 17:17
2-sample bootstrap test in python
def bootstrap_test(higher, lower, n=100000):
xs = higher
ys = lower
m = np.mean(xs) - np.mean(ys)
zs = np.concatenate((xs,ys))
boots = np.random.choice(ys, size=(n,len(zs)))
return np.sum(np.mean(boots[:,0:len(xs)], 1) - np.mean(boots[:,len(xs)+1:], 1) > m)
# test whether the mean of the array `higher` is higher than the mean of the array `lower`
def bootstrap_pvalue(higher, lower, n=100000):
dharasim / parsetree.jl
Created July 31, 2019 14:22
Using parser combinators in Julia
View parsetree.jl
module TreeFromString
using PEG
import Base: show
struct Tree{T}
val ::T
children ::Vector{Tree{T}}