Skip to content

Instantly share code, notes, and snippets.

View eclarke's full-sized avatar

Erik Clarke eclarke

View GitHub Profile
@eclarke
eclarke / notebook.org
Created October 22, 2014 00:24
Example notebook.org file

Erik’s Lab Notebook

<2014-09-25 Thu>

Reading this [@Wang:2010fh], in particular Supp. report 4. Has to do with bootstrapping population estimates using the different enzymes used to find

@eclarke
eclarke / papers2bibtex.scpt
Last active August 29, 2015 14:07
Applescript to export Papers library as bibtex file
tell application "Papers"
set outFile to "path_to_notebook_folder/library.bib"
export ((every publication item) as list) to outFile
end tell
@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...")
@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) {
##
# Multiple plot function
#
# ggplot objects can be passed in ..., or to plotlist (as a list of ggplot objects)
# - cols: Number of columns in layout
# - layout: A matrix specifying the layout. If present, 'cols' is ignored.
#
# If the layout is something like matrix(c(1,2,3,3), nrow=2, byrow=TRUE),
# then plot 1 will go in the upper left, 2 will go in the upper right, and
# 3 will go all the way across the bottom.
#
@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
@eclarke
eclarke / toggleproxy.sh
Last active August 29, 2015 13:57
A hackety hack function to toggle SSH/SOCKS proxy on OS X Mavericks
function toggleproxy {
# checks to see if SOCKS proxy is enabled
if [[ $(networksetup -getsocksfirewallproxy Wi-Fi | grep '^Enabled') == "Enabled: No" ]]; then
networksetup -setsocksfirewallproxystate Wi-Fi on
echo "SOCKS on!"
# checks to see if there's an existing SSH tunnel and if not, it starts one
if [[ -z $(ps aux | grep '[0-9] ssh -D 8080') ]]; then
echo -ne "Don't see a ssh tunnel on 8080 active, starting one now..."
ssh -D 8080 -f -C -q -N USERNAME@HOSTNAME.EDU # Change this from the defaults!
[[ $? == 0 ]] && echo " success!" || echo " failed :("
@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 / procspawn.py
Created June 15, 2012 19:03
Spawning processes in Python
import sqlite3
import multiprocessing
store_results_sql = """ some sql code here """
select_results_sql = """ some other sql code here """
def find_enriched(**kwargs):
# do some heavy computation task here
results = enrichment_analysis(**kwargs)
# sqlite is not ideal for parallel processing, but with a timeout it should be fine
@eclarke
eclarke / filter_obs.py
Created May 2, 2012 21:33
filter obsolete go terms
#!/usr/bin/env python
import re
import json
import clint
def import_go(gofile='go.json'):
try:
return json.loads(json.load(open(gofile)))
except IOError: