| 
12
 | 
     1 ########################################################
 | 
| 
 | 
     2 #
 | 
| 
 | 
     3 # creation date : 09/08/16
 | 
| 
 | 
     4 # last modification : 16/08/16
 | 
| 
 | 
     5 # author : Dr Nicolas Beaume
 | 
| 
 | 
     6 # owner : IRRI
 | 
| 
 | 
     7 #
 | 
| 
 | 
     8 ########################################################
 | 
| 
39
 | 
     9 
 | 
| 
12
 | 
    10 #######################################################
 | 
| 
 | 
    11 dataStats.nbNA <- function(x) {
 | 
| 
 | 
    12   return(length(x[is.na(x)]))
 | 
| 
 | 
    13 }
 | 
| 
 | 
    14 dataStats.matrixSize <- function(data) {
 | 
| 
 | 
    15   nbMarker <- nrow(data)
 | 
| 
 | 
    16   nbSample <- ncol(data)
 | 
| 
 | 
    17   return(list(nbMarker=nbMarker, nbSample=nbSample))
 | 
| 
 | 
    18 }
 | 
| 
 | 
    19 
 | 
| 
 | 
    20 parseFrq <- function(freqFile) {
 | 
| 
 | 
    21   data <- read.table(freqFile, h=T)
 | 
| 
 | 
    22   return(data.frame(chr=data$CHR, pos=data$SNP, maf=data$MAF))
 | 
| 
 | 
    23 }
 | 
| 
 | 
    24 
 | 
| 
 | 
    25 parseHWE <- function(hweFile) {
 | 
| 
 | 
    26   data <- read.table(hweFile, h=T)
 | 
| 
 | 
    27   return(data.frame(chr=data$CHR, pos=data$SNP, pvalue=data$P))
 | 
| 
 | 
    28 }
 | 
| 
 | 
    29 
 | 
| 
 | 
    30 ########################## main function ##################
 | 
| 
 | 
    31 createReport <- function(genoFile, freqFile, hweFile, out="report.txt") {
 | 
| 
 | 
    32   # get basic statistics (nb markers, nb samples, nb NA)
 | 
| 
 | 
    33   data <- read.table(genoFile, sep="\t", h=T)
 | 
| 
39
 | 
    34   missingData <- dataStats.nbNA(data)/length(data)
 | 
| 
12
 | 
    35   dataDimension <- dataStats.matrixSize(data)
 | 
| 
 | 
    36   # get MAF info
 | 
| 
 | 
    37   freq <- parseFrq(freqFile)
 | 
| 
 | 
    38   # get Hardy-Weinberg equilibrium
 | 
| 
 | 
    39   hwe <- parseHWE(hweFile)
 | 
| 
 | 
    40   # merge info
 | 
| 
 | 
    41   info <- data.frame(freq, hwe=hwe[,3])
 | 
| 
 | 
    42   # write report
 | 
| 
 | 
    43   write(paste("number of marker :", dataDimension$nbMarker), file=out)
 | 
| 
 | 
    44   write(paste("number of sample :", dataDimension$nbSample), file=out, append = T)
 | 
| 
39
 | 
    45   write(paste("ratio of missing data :", missingData), file=out, append = T)
 | 
| 
 | 
    46   suppressWarnings(suppressMessages(write.table(info, file=out, append = T)))
 | 
| 
12
 | 
    47 }
 | 
| 
 | 
    48 ############################ main ##########################
 | 
| 
 | 
    49 cmd <- commandArgs(T)
 | 
| 
 | 
    50 source(cmd[1])
 | 
| 
 | 
    51 createReport(genotype, plinkFreq, plinkHWE, out)
 | 
| 
 | 
    52 # # get basic statistics (nb markers, nb samples, nb NA)
 | 
| 
 | 
    53 # data <- read.table(genotype, sep="\t", h=T)
 | 
| 
 | 
    54 # dataDimension <- dataStats.matrixSize(data)
 | 
| 
 | 
    55 # # get MAF info
 | 
| 
 | 
    56 # freq <- parseFrq(freqFile)
 | 
| 
 | 
    57 # # get Hardy-Weinberg equilibrium
 | 
| 
 | 
    58 # hwe <- parseHWE(hweFile)
 | 
| 
 | 
    59 # # merge info
 | 
| 
 | 
    60 # info <- data.frame(freq, hwe=hwe[,3])
 | 
| 
 | 
    61 # # write report
 | 
| 
 | 
    62 # cat(paste("number of marker : ", dataDimension$nbMarker, "\n", sep=""))
 | 
| 
 | 
    63 # cat(paste("number of sample : ", dataDimension$nbSample, "\n", sep=""))
 | 
| 
 | 
    64 # print(info)
 | 
| 
 | 
    65 # cat("\n")
 |