Skip to content

Instantly share code, notes, and snippets.

View cvanelteren's full-sized avatar

Casper van Elteren cvanelteren

View GitHub Profile
@cvanelteren
cvanelteren / gil_test.nim
Created August 29, 2024 07:57
Releasing the GIL in Nim
import strutils, strformat, os, random, times
import dynlib
import nimpy, nimpy/py_lib, nimpy/py_types
{.pragma: pyfunc, cdecl, gcsafe.}
import locks
import malebolgia, math
import random, os
import chronos
@cvanelteren
cvanelteren / vibrant.py
Created August 10, 2024 16:08
vibrant colormap
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import numpy as np
def create_continuous_colormap(colors, name='custom_colormap'):
# Define color positions (evenly spaced between 0 and 1)
n = len(colors)
positions = np.linspace(0, 1, n)
# Create a colormap
#!/usr/bin/env bashgit clone --bare [email protected]:cvanelteren/dots.git $HOME/.dotfiles# define config alias locally since the dotfiles
# aren't installed on the system yet
function config {
git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME $@
}# create a directory to backup existing dotfiles to
mkdir -p .dotfiles-backup
config checkout
if [ $? = 0 ]; then
echo "Checked out dotfiles from [email protected]:cvanelteren/dotfiles.git";
else
@cvanelteren
cvanelteren / networkx_with_image.py
Created June 1, 2024 10:52
replace networkx nodes with images
import matplotlib.pyplot as plt
from matplotlib.offsetbox import OffsetImage, AnnotationBbox
g = nx.krackhardt_kite_graph()
pos = nx.kamada_kawai_layout(g)
example = "unknown.jpg"
fig, ax = plt.subplots()
output_size = 25
@cvanelteren
cvanelteren / annotation_network.py
Created May 29, 2024 09:45
cross_figure annotation
import proplot as plt, cmasher as cmr, pandas as pd,\
numpy as np, os, sys, networkx as nx, warnings,\
re
from pathlib import Path
warnings.simplefilter("ignore")
g = nx.krackhardt_kite_graph()
pos = nx.kamada_kawai_layout(g)
@cvanelteren
cvanelteren / bundle.py
Last active June 16, 2024 08:12
data shader edge bundling
import proplot as plt, networkx as nx, pandas as pd
def bundle(g: nx.Graph, pos: dict):
from datashader.bundling import hammer_bundle
edges = []
for u, v in g.edges():
row = dict(source=u, target=v)
edges.append(row)
edges = pd.DataFrame(edges)
@cvanelteren
cvanelteren / overly_complicated.py
Created February 26, 2024 15:32
dynamic_plot
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
def fill_between_3d(ax,x1,y1,z1,x2,y2,z2,mode=1,c='steelblue',alpha=0.6):
"""
@cvanelteren
cvanelteren / arc_layout.py
Created October 19, 2023 13:04
Networkx simple hive plot
def arc_layout(
G: nx.Graph, subset_key="subset", radius=1, rotation=0, offset=0
) -> dict:
"""Arc layout for networkx
Provides a layout where a multipartite graph is
displayed on a unit circle. This could provide clear
visuals for data that is highly clustered.
Parameters
@cvanelteren
cvanelteren / multilayer_layout.py
Last active January 8, 2024 20:53
Flat multilayer layout networkx
import proplot as plt, cmasher as cmr, pandas as pd, numpy as np, os, sys, networkx as nx, warnings
def multilayer_layout(
G: nx.Graph,
subset_key="layer",
layout=nx.spring_layout,
separation: float = 10.0,
) -> dict:
# set positions
@cvanelteren
cvanelteren / test.json
Created September 29, 2022 12:57
visgraph test
{"directed": false, "multigraph": false, "graph": {"name": "Krackhardt Kite Social Network"}, "nodes": [{"id": 0}, {"id": 1}, {"id": 2}, {"id": 3}, {"id": 4}, {"id": 5}, {"id": 6}, {"id": 7}, {"id": 8}, {"id": 9}], "links": [{"source": 0, "target": 1}, {"source": 0, "target": 2}, {"source": 0, "target": 3}, {"source": 0, "target": 5}, {"source": 1, "target": 3}, {"source": 1, "target": 4}, {"source": 1, "target": 6}, {"source": 2, "target": 3}, {"source": 2, "target": 5}, {"source": 3, "target": 4}, {"source": 3, "target": 5}, {"source": 3, "target": 6}, {"source": 4, "target": 6}, {"source": 5, "target": 6}, {"source": 5, "target": 7}, {"source": 6, "target": 7}, {"source": 7, "target": 8}, {"source": 8, "target": 9}]}