File: get_Poisson_conf_intervals.R

package info (click to toggle)
trinityrnaseq 2.11.0%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 417,528 kB
  • sloc: perl: 48,420; cpp: 17,749; java: 12,695; python: 3,124; sh: 1,030; ansic: 983; makefile: 688; xml: 62
file content (102 lines) | stat: -rw-r--r-- 1,935 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

get_Poisson_conf_intervals = function(seq_range, quantile_vec = c(0.05,0.95), plot=T) {
	
	num_rows = length(seq_range)
	num_cols = length(quantile_vec)
	m = matrix(nrow=num_rows, ncol=num_cols)
	
    colnames(m) = quantile_vec	
	rownames(m) = seq_range

	row_count = 0
	for (i in seq_range) {
		q = qpois(quantile_vec, i)
		row_count = row_count + 1
		m[row_count,] = q			
	
	}

    results = list()
    results$mat = m
	
	if (plot) {
		percents = plot_conf_intervals(m)
 	    
        results$pct = percents
    }

	return(results)

}


get_NB_conf_intervals = function(seq_range, dispersion, quantile_vec = c(0.05,0.95), plot=T) {
	
    size = 1/dispersion  #according to the mu-definition of size in nbinom of R, where var = mean + (1/size)mean^2
    
	num_rows = length(seq_range)
	num_cols = length(quantile_vec)
	m = matrix(nrow=num_rows, ncol=num_cols)
	
    colnames(m) = quantile_vec	
	rownames(m) = seq_range

	row_count = 0
	for (i in seq_range) {
		q = qnbinom(quantile_vec, mu=i, size=size)
		row_count = row_count + 1
		m[row_count,] = q			
	
	}
	
    results = list()
    results$mat = m
    

	if (plot) {
		percents = plot_conf_intervals(m)
 	
        results$pct = percents
    }

	return(results)

}






plot_conf_intervals = function(m) {

	par(mfrow=c(1,2))

	c_names = colnames(m)
	r_vals = as.numeric(rownames(m))

	max_val = max(m)
	
	plot(r_vals, r_vals, xlab="known read counts", ylab="Poisson read counts dist", t='l')

	# plot the confidence levels
	line_colors = rainbow(length(c_names))
	for(i in 1:length(c_names)) {
		points(r_vals,m[,i], t='l', col=line_colors[i])
	}

	# plot the max percentage of value for 95% conf level.
	percents=c()
	for (i in 1:length(r_vals)) {

		max_delta = max(abs(m[i,]-r_vals[i]))
		percent = max_delta/r_vals[i]*100
		
		percents[i]=percent;
	}
	
	plot(r_vals, percents, ylim=c(0,100), xlab="read counts", ylab="percent of value for 95% conf interval")

	percents

}