Skip to content

Instantly share code, notes, and snippets.

View eclarke's full-sized avatar

Erik Clarke eclarke

View GitHub Profile
@eclarke
eclarke / ggheatmap.R
Last active October 29, 2019 21:04
heatmaps ggplot style, with annotations and dendrograms
plot_ggheatmap <- function(obj, n=nrow(obj), norm=TRUE, log=TRUE,
colnames.in.pdata="NewSampleID",
col.labels=NULL,
row.labels=NULL,
facet.by=NULL,
annotate.cols=NULL,
dendrogram=FALSE,
col.annotation.offset=1,
col.annotation.width=4) {
##
@eclarke
eclarke / beep.sh
Created September 15, 2018 15:17
sends a push with message contents given as arguments
#!/bin/bash
curl --header 'Access-Token: <your_access_token_here>' \
--header 'Content-Type: application/json' \
--data-binary '{"body":":)","title":"$@","type":"note"}' \
--request POST \
https://api.pushbullet.com/v2/pushes
@eclarke
eclarke / lab-notebook.el
Created October 21, 2014 23:26
Minor mode and functions for a lab notebook in emacs
(defun ensure-in-vc-or-checkin ()
(interactive)
(if (file-exists-p (format "%s" (buffer-file-name)))
(progn (vc-next-action nil) (message "Committed"))
(ding) (message "File not checked in.")))
(defun export-bibtex ()
"Exports Papers library using a custom applescript."
(interactive)
(message "Exporting papers library...")

Keybase proof

I hereby claim:

  • I am eclarke on github.
  • I am erikclarke (https://keybase.io/erikclarke) on keybase.
  • I have a public key ASDtTlFKxCJoOWfwfhHy-MJtbmGKnvzo-zxrJETJmi1kNQo

To claim this, I am signing this object:

@eclarke
eclarke / ggheatmaps.R
Created April 8, 2014 19:37
Some r code relating to heatmaps and OTU counts
prop_presence_absence <- function(otu.pa, groups) {
# Creates a proportional presence-absence melted dataframe suitable for use in
# ggplot heatmaps to show varying within-group proportions of species.
#
# Args:
# otu.pa: Matrix of presence-absence data. Columns are samples, rows are
# species.
# groups: Grouping data frame. A column named "SampleID" should be unique
# list of sample identifiers that match the column names of otu.pa.
# The other column, named "group", should correspond to the group
# This is the testing function that builds the models
testMixedEffects <- function(test.col) {
# We return this default in case of error/no fit
default <- list(null.model=NA, model=NA)
counts <- .mat[, colnames(.mat)==test.col]
if (sum(counts > 0)/length(counts) < sparsity) {
message(sprintf("%s: too sparse, skipping", test.col))
return(default)
}
@eclarke
eclarke / indicspecies_tutorial.R
Last active July 26, 2016 20:08
Using indicspecies with a melted data frame
# Using indicspecies with a melted data frame
# Their input is actually not hard to work with. First we need to re-create the count matrix.
# This creates a data frame with the sample ID and study group as the first two columns, then each column after that is an OTU name
# (Replace column names as appropriate)
mat <- melted.df %>% reshape2::dcast(SampleID + StudyGroup ~ otu)
# Next, we actually convert things into inputs
# Hadley's stuff hates rownames, so we have to remake them
rownames(mat) = mat$SampleID
@eclarke
eclarke / Makefile
Created April 20, 2016 19:13
Builds docs, html site, and pushes to github
docs:
Rscript -e "devtools::document(roclets=c('rd', 'collate', 'namespace', 'vignette'))"
gh-pages:
git checkout gh-pages
git merge master -X theirs -m "merge master"
site:docs gh-pages
Rscript -e "staticdocs::build_site(site_path='.', launch=FALSE)"
git commit -am 'updated docs'
@eclarke
eclarke / taxonomy_fixer.py
Created June 26, 2013 19:28
Taxonomy fixer
#!/usr/bin/env python
"""Usage: python taxonomy_fixer.py [FILE]
Converts an ITS taxonomy file to eliminate taxa marked as unidentified,
swaps [kpcofg]__unidentified;s__Fungi to k__Fungi, and eliminates species
taxa that are simply s__[genus]_sp.
Writes to stdout.
"""
# Erik Clarke <ecl@mail.med.upenn.edu>
@eclarke
eclarke / indvals.R
Last active December 4, 2015 22:21
Indicator species (indicator value) functions
# Indicator value functions -----------------------------------------------
#' Returns the indicator value (Dufrene, 1997) for a given row of species counts
#' along with a vector of class assignments.
#' @param row: vector of counts (usually a row in a counts matrix)
#' @param class: which level in the grouping variable to test
#' @param classes: factor describing the grouping of the counts vector
.indval <- function(row, class, classes) {
idxs <- classes == class
A.ij <- sum(row[idxs]) / sum(row)