Skip to content

Instantly share code, notes, and snippets.

View jg-you's full-sized avatar
🐢

Jean-Gabriel Young jg-you

🐢
View GitHub Profile
@jg-you
jg-you / bernstein.stan
Last active October 30, 2018 00:19
Evaluate a Bézier curve in Bernstein form at a point, using De Casteljau's algorithm, in the STAN language
functions {
/**
* Computes the value of a Bernstein polynomial of degree N at point t,
* using De Casteljau's algorithm.
*
* @param t Point in [0, 1] where the the polynomial will be evaluated.
* @param beta Vector of the real N + 1 coefficients of the polynomial.
* @param N Degree of the polynomial.
*
* @return Value of the polynomial at point t.
@jg-you
jg-you / orbits.py
Last active January 23, 2023 15:23
Computing the number of orbits in a graph, with dreadnaut (nauty), in python
# -*- coding: utf-8 -*-
"""
Wrapper around dreadnaut that computes the orbits of a graph.
NOTE: Must have installed `dreandaut`. The location of the binary can be passed
as an argument to `compute_automorphisms`.
Author: Jean-Gabriel Young <info@jgyoung.ca>
"""
import subprocess
@jg-you
jg-you / stateless_derivation_and_template.cpp
Last active January 12, 2018 22:17
How to use stateless class derived from a virtual base class in a templated class. A strategy I use in many code
#include <iostream>
class master_virtual
{
public:
virtual void msg() {return;}
};
class derived_hi : public master_virtual
{
@jg-you
jg-you / inline_gt_fig.py
Last active July 19, 2017 15:56
Inline graph-tool figures in jupyter-notebook
# The newest version of graph-tool plots directly in a gtk window, by default.
# The following allow you to add inline plots in a jupyter-notebook (this was previously trivial).
# [The following code must appear in a notebook, obviously]
import graph_tool as gt
import graph_tool.draw
import graph_tool.collection
import matplotlib.pyplot as plt
@jg-you
jg-you / draw_graphon.py
Created August 25, 2016 21:02
Draw graphon Stochastic Block Models
import matplotlibt.pyplot as plt
import numpy as np
plt.figure(figsize=(5,4))
X, Y = np.meshgrid(np.linspace(0,1), np.linspace(0,1))
plt.pcolormesh(X,Y,graphon_val(X,Y,p,n))
plt.colorbar()
@jg-you
jg-you / draw_nx_beautiful.py
Last active October 30, 2022 00:04
Beautiful networkx graph
import copy
import networkx
import matplotlib.pyplot as plt
# Generate a graph.
# Here I chose an ER graph.
g = nx.erdos_renyi_graph(20, 0.3)
# Get positions.
# Here I use the spectral layout and add a little bit of noise.
@jg-you
jg-you / mdown_toc.py
Last active July 7, 2020 06:05
Generate TOC for a markdown file
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @author: Jean-Gabriel Young <jean.gabriel.young@gmail.com>
"""Generate TOC for a markdown file."""
import re
# Match between 1 and 4 #
section = re.compile('^\s*(#){1,4}\s?')
strip_url = re.compile('[\W_]+', re.UNICODE)
@jg-you
jg-you / extraction.py
Last active October 14, 2015 23:35
Extract parts of a pdf file as a png (dirty hack)
#!/usr/bin/env python3
# Author: Jean-Gabriel Young
# Email: jean.gabriel.young@gmail.com
# -*- coding: utf-8 -*-
import argparse
import subprocess
import os
from PIL import Image
@jg-you
jg-you / supersets.py
Last active August 29, 2015 14:21
Find all supersets of a collection
collection = [{1, 2, 3, 4, 5},
{1, 2},
{1, 2, 3, 4, 5, 6},
{3, 4, 8},
{3, 4, 11},
{3},
{3},
{12},
{1, 2, 3, 4, 5, 6},
{1, 2, 3, 4, 7, 9},
@jg-you
jg-you / main_master_slave.cpp
Last active October 15, 2020 02:13
Master / Slave example with boost::mpi
// STL
#include <cstdlib>
#include <iostream>
// boost::mpi
#include <boost/mpi/environment.hpp>
#include <boost/mpi/communicator.hpp>
#include <boost/mpi/status.hpp>
namespace mpi = boost::mpi;
// Definitions
#define NUMBER_OF_JOBS 12