Skip to content

Instantly share code, notes, and snippets.

🍄
.

Zhian N. Kamvar zkamvar

View GitHub Profile
@zkamvar
zkamvar / render-demo.R
Last active Aug 23, 2018
Render an R demo
View render-demo.R
#!/usr/bin/env Rscript
args <- commandArgs(trailingOnly = TRUE)
if (length(args) != 2) {
msg <- "
usage:
render-demo.R <demo> <package>
This utility will render the code and figures from a given package as a PDF
and place them into a directory called `<demo>-generated_files`. This requires
knitr, rmarkdown and LaTeX to be installed on your system.
@zkamvar
zkamvar / bootstrap-genet-dist.md
Last active Aug 21, 2018
Generating a bootstrap dendrogram with hierfstat's genet.dist
View bootstrap-genet-dist.md
title author date
Generating a bootstrap dendrogram with hierfstat's genet.dist
Zhian N. Kamvar
2018-08-21

This short tutorial is an answer to the question posed on the poppr forum: https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/poppr/vEQ8vb2oObQ/RjTsndaCEQAJ

My ultimate goal when asking the previous question was to employ aboot in order to create a bootstraped dendrogram based on distances offered by the genet.dist function in hierfstat. That's why I was trying to create a tree based on Nei's distance this way - to verify that it worked! Unfortunately even after reading the aboot documentation, I still fail to understand how to do this. I would be grateful if someone could provide an example of using aboot in combination with genet.dist.

@zkamvar
zkamvar / guide_generator.R
Created Jan 5, 2018
Generate guides for making a poster in inkscape
View guide_generator.R
#' Get the size of a single panel
#'
#' @param n the number of panels
#' @param len the overall length of the side
#' @param margin the outer margin width (will be multiplied by 2)
#' @param gutter the space between panels
#'
#' @return a numeric value specifying the panel width/length
#'
#' @examples
@zkamvar
zkamvar / statphi.R
Last active Dec 18, 2017
Get Phi statistics from amova object from either pegas or ade4
View statphi.R
ade4phi <- function(sig){
n <- length(sig)
f <- rep(0, n - 1)
if (length(sig) == 3) {
f <- rep(0, 1)
}
f[1] <- (sig[n] - sig[n - 1]) / sig[n]
if (length(f) > 1) {
s1 <- cumsum(sig[(n - 1):2])[-1]
@zkamvar
zkamvar / find_chromosome_region.py
Created Nov 1, 2017
Find chromosome regions for given SSR GenBank IDs
View find_chromosome_region.py
#!/usr/bin/env python3
#
# This script will BLAST a series of GenBank IDs representing SSR sequences from
# Sirjusingh, C., Kohn, L.M., 2001. Characterization of microsatellites in the
# fungal plant pathogen, Sclerotinia sclerotiorum. Molecular Ecology 1, 267e269.
#
# This uses biopython to download the XML, save it to a file in the working
# directory, and then looks for matches that have Sclerotinia chromosome in the
# title and has a score of > 100. If there's a better way to do this, I would
# like to know it. Currently, it can download a few results at a time and then
@zkamvar
zkamvar / silly-emoji-copy.sh
Created Oct 11, 2017
silly emoji for bash commands
View silly-emoji-copy.sh
# shruggie
# Source: https://twitter.com/climagic/status/672862397015658496
function shrug(){ echo -n "¯\_(ツ)_/¯" | pbcopy;echo "¯\_(ツ)_/¯ copied to your clipboard"; }
export -f shrug
# strollie
function stroll(){ echo -n "ᕕ( ᐛ )ᕗ" | pbcopy; echo "ᕕ( ᐛ )ᕗ copied to your clipboard"; }
export -f stroll
# flippy
View purr_mc.R
# This is from @drob on twitter:
#
# https://twitter.com/drob/status/915378838078722048
#
library("purrr")
transition_mc <- function(steps, start, mat){
i <- seq_len(nrow(mat))
transition <- ~ sample(i, prob = (i == .) %*% mat)
accumulate(seq_len(steps), transition, .init = start)
}
@zkamvar
zkamvar / pastena.R
Last active Sep 14, 2017
Paste function that replaces NA characters with blanks
View pastena.R
#' paste function that replaces NA characters with blanks
#'
#' All arguments are passed to paste.
#'
#' Usage:
#' pastena(letters, sample(c(1:10, NA), 26, replace = TRUE))
pastena <- function(..., collapse = NULL, sep = " ") {
dots <- list(...)
dots <- lapply(dots, function(i) ifelse(is.na(i), "", i))
res <- do.call("paste", c(dots, list(collapse = collapse, sep = sep)))
@zkamvar
zkamvar / gvcf2csv.sh
Created Sep 8, 2017
create csv from gvcf
View gvcf2csv.sh
#!/usr/bin/env bash
# This ridiculous script will take in a file as input and spit out comma-separated text for easier parsing.
# Usage:
# $ gvcf2csv.sh GVCF.err | column -t -s,
grep ProgressMeter $1 | \
awk -F" - " '{print $2}' | \
tail -n +2 | \
sed -E 's/[ ]\|[ ]/,/g' | \
sed -E "s/([0-9hmsw%])[ ]{3,}([0-9])/\1,\2/g"
@zkamvar
zkamvar / Makefile
Last active Jul 31, 2018
Example SLURM script that records memory, time, and job id
View Makefile
FILES := file1.out \
file2.out \
file3.out \
file4.out \
file5.out \
file6.out \
file7.out \
file8.out \
file9.out
You can’t perform that action at this time.