Skip to content

Instantly share code, notes, and snippets.

View cdiener's full-sized avatar
👨‍🔬
Researching 'em microbes...

Christian Diener cdiener

👨‍🔬
Researching 'em microbes...
View GitHub Profile
@cdiener
cdiener / points
Last active August 29, 2015 14:20
ggplot2 grouped points with horizontal means
library(scales)
library(Hmisc)
emsa_plot = ggplot(emsa, aes(x=Name, y=intensity, shape=charge_ratio, col=charge_ratio, width=0.8)) +
geom_point(size=3, position=position_dodge(width=0.8)) +
stat_summary(fun.data=mean_sdl, mult=0, color="black", geom="errorbar", size=1, position=position_dodge(width=0.8)) +
scale_color_grey(start=0, end=0.5,name="charge ratio") +
scale_shape(name="charge ratio") +
scale_y_continuous(limits=c(-0.05,1), breaks=seq(0,1,by=0.2), label=percent) +
@cdiener
cdiener / cache.R
Last active August 29, 2015 14:23
cache operator for R
# Caching operator executes command if there is no saved version of the data
# just delete the saved file and code will be run again
'%c%' = function(ex, file) if(file.exists(file), env=parent.frame(4)) load(file) else evalq(ex))
# Example
# first execution
{ x <- rnorm(1e6); save(x, file="cache.Rd") } %c% "cache.Rd" # executes the sampling
@cdiener
cdiener / eset_reduce.R
Last active February 3, 2016 22:03
ExpressionSet reducer - allows you to reduce the features of an expression set from an nxn grouping, for instance probesets to genes/transcripts etc.
Rcpp::sourceCpp("matrix_reduce.cpp")
#' Reduces an ExpressionSet by an n-to-n map of features to groups. All entries
#' in \code{features} must exist in \code{eset}. \code{features} and
#' \code{groups} must have the same length.
#'
#' @param eset An ExpressionSet object.
#' @param features A character vector of features to be grouped.
#' @param groups A factor or character vector mapping the entries in
#' \code{features} to groups.
#/usr/bin/env python
from cobra.test import create_test_model
from cobra.flux_analysis import single_gene_deletion
cobra_model = create_test_model("textbook")
dels = {"b0008": 0.87, "b0114": 0.71, "b0116": 0.56, "b2276": 0.11, "b1779": 0.00}
rates, statuses = single_gene_deletion(cobra_model, gene_list=dels.keys(),
method="moma", solver="mosek")
@cdiener
cdiener / enrichment.R
Created May 4, 2016 19:47
Small GSEA implementation
ES <- function(p, w, pws, both=FALSE) {
n <- length(pws)
nr <- sum(abs(w[pws == p]))
nh <- sum(pws == p)
scores <- vector(length=n)
scores[pws == p] <- abs(w[pws == p])/nr
scores[pws != p] <- -1/(n - nh)
r <- range(cumsum(scores))
i <- which.max(abs(r))
@cdiener
cdiener / compare.py
Last active March 6, 2017 18:55
Compare pytest benchmarks
import json
import pandas as pd
from sys import argv, exit
def benchmark_to_df(json_file):
with open(json_file) as jf:
content = json.load(jf)
df = pd.DataFrame(columns=("test", "time [ms]"))
for b in content["benchmarks"]:
@cdiener
cdiener / settings.json
Created June 16, 2017 20:46
My vscode settings....
{
"workbench.colorTheme": "Sublime Material Theme - Dark",
"workbench.iconTheme": "material-icon-theme",
"editor.fontFamily": "'Fira Mono', monospace",
"editor.fontSize": 17,
"editor.rulers": [80],
"window.zoomLevel": 0,
"window.menuBarVisibility": "toggle",
// Settings for Python
@cdiener
cdiener / orlitsky.R
Created September 1, 2017 21:40
Source code for my blog post
library(data.table)
library(ggplot2)
library(magrittr)
library(pbapply)
large <- fread("ERR260132_genes.csv")
#' Sample a rarefied version of a count vector.
#'
#' @param x A named vector of counts.
@cdiener
cdiener / install.md
Last active November 9, 2017 04:25
Como instalar docker para la clase de Desafio LatAm.

Instalación de Docker

Lo primero que tienes que saber sobre la instalación de docker es que para Mac y windows hay dos versiones de docker:

  1. una versión legacy que usa maquinas virtuales (VM) para correr docker adentro de una maquina virtual.
  2. una versión nativa que usa una capa de compatibilidad (HyperKit + Hypervisor en Mac y Hyper-V en Windows) para correr docker directamente con el kernel nativo

La versión nativa (opción 2) tiene menos overhead y corre más rapido pero pone mas restricciones a su OS. Por el momento yo recomiendo que usan esta versión en Mac y Linux y la version legacy (opcion 1) en Windows.

@cdiener
cdiener / install_python.md
Last active January 20, 2018 15:14
Como instalar Python y Jupyter

Como instalar Python y Jupyter

Para las siguientes clases vamos a usar Python como nuestro lenguaje de programación preferido. En particular, vamos a usar la versión 3 de Python y las libretas de Jupyter. Para ya tener una instalación funcional en la clase, aquí hay unas pistas para la instalación. Para la instalación en Windows y Mac vamos a usar la versión de Anaconda mientras que para Linux usamos la versión nativa de Python.

Para Windows