Skip to content

Instantly share code, notes, and snippets.

View mikelove's full-sized avatar

Michael Love mikelove

View GitHub Profile
@mikelove
mikelove / 1_app.R
Last active April 26, 2024 12:10
IGVF ancestry dashboard sketch
library(shiny)
library(UpSetR)
library(dplyr)
library(tidyr)
library(readr)
library(ggplot2)
dat <- read_delim("ancestry_dataframe.tsv")
ui <- fluidPage(
titlePanel("IGVF Ancestry Dashboard"),
@mikelove
mikelove / tsne.R
Last active April 6, 2024 01:11
Exploring behavior of t-SNE on linear data
n <- 200
m <- 40
set.seed(1)
x <- runif(n, -1, 1)
library(rafalib)
bigpar(2,2,mar=c(3,3,3,1))
library(RColorBrewer)
cols <- brewer.pal(11, "Spectral")[as.integer(cut(x, 11))]
plot(x, rep(0,n), ylim=c(-1,1), yaxt="n", xlab="", ylab="",
col=cols, pch=20, main="underlying data")
@mikelove
mikelove / frozen_vst.R
Created February 19, 2024 14:02
Frozen variance stabilizing transformation for count data
mat <- matrix(rnbinom(2e5, mu=100, size=1/.01), ncol=100)
library(DESeq2)
d <- DESeqDataSetFromMatrix(mat, DataFrame(x=rep(1,100)), ~1)
# library size correction, centered log ratio to reference sample
d <- estimateSizeFactors(d)
# variance
d <- estimateDispersionsGeneEst(d)
# trend
@mikelove
mikelove / element_level.R
Last active February 9, 2024 20:00
Element level analysis with mpralm
set.seed(5)
n <- 1000
reps <- 10
rna <- matrix(
rnbinom(n * reps, mu = 10, size = 100),
ncol=reps
)
dna <- matrix(
rnbinom(n * reps, mu = 10, size = 100),
@mikelove
mikelove / Snakefile
Last active January 29, 2024 20:17
my Salmon Snakemake file
RUNS, = glob_wildcards("fastq/{run}_1.fastq.gz")
SALMON = "/proj/milovelab/bin/salmon-1.4.0_linux_x86_64/bin/salmon"
ANNO = "/proj/milovelab/anno"
rule all:
input: expand("quants/{run}/quant.sf", run=RUNS)
rule salmon_index:
@mikelove
mikelove / deseq2_curves.R
Created June 15, 2023 06:17
Drawing DESeq2 fitted spline curves on top of scaled counts
library(splines)
library(DESeq2)
# make some demo data
dds <- makeExampleDESeqDataSet(n=100, m=40)
dds$condition <- sort(runif(40))
# make one gene where expression has a curve shape (just for demo)
s_shape <- round(500 * sin(dds$condition*2*pi) + 1000 + rnorm(40,0,50))
mode(s_shape) <- "integer"
counts(dds)[1,] <- s_shape
@mikelove
mikelove / R_Bioc_tidy_data.R
Created November 3, 2023 02:51
Demonstration of various classes in R
# dataframes vs lm S3 vs Bioc S4
# Michael Love
# Nov 1 2023
dat <- data.frame(genotype=c("wt","wt","mut","mut"),
count=c(10,20,30,40),
score=c(-1.2,0,3.4,-5),
gene=c("Abc","Abc","Xyz","Xyz"))
library(tibble)
dat |> as_tibble()
@mikelove
mikelove / explore_tidyverse_omics.R
Last active November 1, 2023 15:26
Simple exploration of data with tidyverse and tidyomics
library(palmerpenguins) # penguins!
library(ggplot2) # "grammar of graphics" plots
suppressPackageStartupMessages(
library(dplyr) # data pliers
)
penguins |>
slice(1:3) |>
select(species, island)
@mikelove
mikelove / tree_example.Rmd
Created October 16, 2023 14:34
Toy tree example for collapsing
---
title: "Toy tree example for collapsing"
author: "Michael Love"
---
Example data with 20 inferential replicates, here we just have 1
sample per condition and we calculate the LFC at each level of the
tree.
From the below simulation setup (see first chunk), the true DE signal
library(plyranges)
library(readr)
bindata <- read_tsv("bindata.40000.hg19.tsv.gz")
fire <- read_bed("fire-adult-hg19.txt")
# not necessary, but nice to have
si <- Seqinfo(genome="hg19")
si <- keepStandardChromosomes(si)