GithubHelp home page GithubHelp logo

airoldilab / mrna-prot Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dad/mrna-prot

0.0 1.0 0.0 59.83 MB

Repository for the mRNA/protein study (Csardi et al. 2015)

License: Other

R 43.91% C 1.87% TeX 52.29% Makefile 0.73% Erlang 0.09% Python 1.11%

mrna-prot's Introduction

Accounting for experimental noise reveals that mRNA levels, amplified by post-transcriptional processes, largely determine steady-state protein levels in yeast

This repository contains the manuscript mentioned in the title, and associated code and data sets. Should you need help running our code, please contact us.

Citation

Csárdi G, Franks AM, Choi DS, Airoldi EM, Drummond DA, “Accounting for experimental noise reveals that mRNA levels, amplified by post-transcriptional processes, largely determine steady-state protein levels in yeast,” PLoS Genetics (2015).

Abstract

Cells respond to their environment by modulating protein levels through mRNA transcription and post-transcriptional control. Modest observed correlations between global steady-state mRNA and protein measurements have been interpreted as evidence that mRNA levels determine roughly 40% of the variation in protein levels, indicating dominant post-transcriptional effects. However, the techniques underlying these conclusions, such as correlation and regression, yield biased results when data are noisy, missing systematically, and collinear—properties of mRNA and protein measurements—which motivated us to revisit this subject. Noise-robust analyses of 24 studies of budding yeast reveal that mRNA levels explain more than 85% of the variation in steady-state protein levels. Protein levels are not proportional to mRNA levels, but rise much more rapidly. Regulation of translation suffices to explain this nonlinear effect, revealing post-transcriptional amplification of, rather than competition with, transcriptional signals. These results substantially revise widely credited models of protein-level regulation, and introduce multiple noise-aware approaches essential for proper analysis of many biological phenomena.

Code

Source for the SCM is in code, and source used to generate merged datasets and figures is in src. The latter relies on code in dad:base/stat-lib.R.

Here, for the impatient, is an implementation of Spearman's correction in R.

# Log-transform x, treating values <= 0 or infinite as NA
log.nozero <- function(x, log.fxn=base::log, ...) {
	x[x<=0 | x==Inf] <- NA
	log.fxn(x, ...)
}


# Spearman correction for correlations between x and y, with each variable being a matrix or data.frame
# of replicates.
cor.sp.matrix <- function(x, y, method='pearson', use='pairwise.complete.obs', log=FALSE, na.rm=FALSE) {
	d <- data.frame(x,y)
	if (log) {
		d <- log.nozero(d)
	}
	if (na.rm) {
		d <- na.omit(d)
	}
	if (nrow(na.omit(d))<3) {
		# Correlations with fewer than 3 points throw errors (and are probably garbage anyway)
		warning("Insufficient data to compute correlations")
	}

	# Dimensions: do the right thing if there's only one measurement of x or y.
	nx <- 1
	if (!is.null(dx <- dim(x))) {
		nx <- dx[2]
	}
	ny <- 1
	if (!is.null(dy <- dim(y))) {
		ny <- dy[2]
	}
	# Calculate the full correlation matrix
	r <- cor(d, method=method, use=use)
	# Extract reliabilities and correlations
	if (nx>1) {
		mrelx <- geom.mean(lt(r[1:nx,1:nx]))
	} else {
		mrelx <- r[1,1] # Just one X value
	}

	if (ny>1) {
		mrely <- geom.mean(lt(r[(nx+1):ncol(d),(nx+1):ncol(d),drop=F]))
	} else {
		mrely <- r[ncol(d),ncol(d)] # Just one Y value
	}
	rr <- r[1:nx,(nx+1):ncol(d)]
	mr <- geom.mean(rr)
	res <- mr/sqrt(mrelx*mrely)
	# Correlation estimate is the Spearman-corrected correlation
	# No confidence interval
	list(r=res, n=nrow(d), r.unc=mr, cor=r, nx=nx, ny=ny, relx=mrelx, rely=mrely, estimate=res, conf.int=c(NA,NA))
}

Data

Published data can be downloaded from Dryad. Many datafiles, including raw data, are also available here for convenience.

License

MIT

mrna-prot's People

Contributors

dad avatar gaborcsardi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.