File: validate_UP_subset.Rscript

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 (73 lines) | stat: -rwxr-xr-x 1,655 bytes parent folder | download | duplicates (3)
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
#!/usr/bin/env Rscript

args<-commandArgs(TRUE)

if (length(args) == 0) {
   stop("usage: validate_UP_subset.Rscript samples.txt");
}

samples_txt_file <- args[1]


validate_UP_subset <- function(filename, samples_list) {
	
	cat("validating: ", filename, "\n")
	
	data <- read.table(filename, header=T, stringsAsFactors=F)
	
	if (nrow(data) == 0) {
		message("no DE entries reported here.")
		return(0)
    }
	

    sampleA <- data[['sampleA']][1]
    sampleB <- data[['sampleB']][1]

	sampleA_rep_names <- samples_list[[sampleA]][['replicate']]
	sampleB_rep_names <- samples_list[[sampleB]][['replicate']]

	sampleA_idx <- which(colnames(data) %in% sampleA_rep_names)
    sampleB_idx <- which(colnames(data) %in% sampleB_rep_names)

	sampleA_mean <- apply(data, 1, function(x) mean(as.numeric(x[sampleA_idx])))
    sampleB_mean <- apply(data, 1, function(x) mean(as.numeric(x[sampleB_idx])))

	cat("sampleA_mean: ", sampleA_mean, "\n") 
    cat("sampleB_mean: ", sampleB_mean, "\n")
	
	num_discordant <- sum(sampleA_mean/sampleB_mean < 0)
   	cat("num discordant: ", num_discordant, "\n")

	return(num_discordant)

}



samples_info <- read.table(samples_txt_file, stringsAsFactors=F)
colnames(samples_info) <- c('sample', 'replicate')
samples_list <- split(samples_info, samples_info$sample)


files <- dir(pattern="*-UP.subset$")



errflag <- 0

for (file in files) {

	num_discordant <- validate_UP_subset(file, samples_list)

	if (num_discordant > 0) {
    	errflag <- 1
        warning("File: (", file, ") has ", num_discordant, " discordant features")
    }
    else {
    	message("File: (", file, ") passes test.")
    }
}

quit("no", errflag)