├── CNV_SNP_level_association.R ├── CNV_assoc_CaseCon.R ├── CNV_assoc_Quantitative.R ├── CNV_burden_level_association.R ├── CNV_burden_platform.R ├── CNV_data.cnv ├── CNV_data.cnv.map ├── CNV_data.fam ├── CNV_data.phe ├── CNV_data_descriptives.R ├── Manhattan.R ├── README.md ├── hg18_implicated_CNV.txt ├── hg18_implicated_del.txt ├── hg18_implicated_dup.txt ├── hg18_refGene_plink.txt └── test /CNV_SNP_level_association.R: -------------------------------------------------------------------------------- 1 | ## CNV_SNP_level_association.R 2 | 3 | ## Author: Daniel P. Howrigan (daniel.howrigan@gmail.com) 4 | ## Last Modified: January 2016 5 | 6 | 7 | ## ----- DESCRIPTION: 8 | 9 | ## Interactive Script to generate CNV SNP level association results 10 | 11 | ## - Case/control association: CNV_CaseCon_assoc.R 12 | ## - Residual phenotype generation 13 | ## - Residual phenotype association: CNV_assoc_Quantitative.R 14 | ## - Family-wise error correction 15 | ## - Manhattan Plot 16 | ## - UCSC .bed and .bedGraph files 17 | 18 | ## ----- SCRIPT SET UP: 19 | 20 | ## PART 1: Case/control association 21 | ## PART 2: Residual phenotype generation 22 | ## PART 2.1: Residual phenotype association 23 | ## PART 3: Z-score association and family-wise error correction 24 | ## PART 4: Manhattan Plot 25 | ## PART 5: UCSC .bed file 26 | ## PART 5.1: UCSC .bedGraph file 27 | 28 | 29 | ## ----- NOTES: 30 | 31 | 32 | 33 | 34 | ## PART 1: Case/control association 35 | 36 | ## example command for running CNV_assoc_CaseCon.R on server 37 | Rscript CNV_assoc_CaseCon.R \ 38 | /humgen/atgu1/fs03/wip/howrigan/pgc_cnv/github \ 39 | "bsub -P PGC_CNV -q hour -R 'rusage[mem=4]' -o CNV_assoc_CaseCon.out" \ 40 | CNV_data \ 41 | 1000 \ 42 | CNV_data \ 43 | no-save 44 | 45 | ## output files in /assoc directory: CNV_data_cnv.cnv.summary and CNV_data_cnv.cnv.summary.mperm 46 | 47 | 48 | 49 | ## PART 2: Residual phenotype generation 50 | 51 | phe <- read.table('CNV_data.phe',h=T,stringsAsFactors=F) 52 | phe$aff <- phe$AFF - 1 53 | 54 | ## Extract Pearson residuals from logistic regression with relevant covariates 55 | resid_pheno <- glm(aff ~ SEX + CNV_platform + C1 + C2 + C3 + C4 + C8, data=phe, family=binomial) 56 | summary(resid_pheno) 57 | phe$AFF_residual <- resid(resid_pheno,'pearson') 58 | 59 | summary(phe$AFF_residual) 60 | summary(phe$AFF_residual[phe$AFF==2]) 61 | summary(phe$AFF_residual[phe$AFF==1]) 62 | 63 | ## examine residuals for outliers. In the PGC SCZ data, we removed a few individuals with values > 3 or < -3 64 | 65 | write.table(phe,'CNV_data_resid.phe',col=T,row=F,quo=F,sep='\t') 66 | 67 | 68 | 69 | 70 | ## PART 2.1: Residual phenotype association 71 | 72 | ## example command for running CNV_assoc_Quantitative.R on server 73 | Rscript CNV_assoc_Quantitative.R \ 74 | /humgen/atgu1/fs03/wip/howrigan/pgc_cnv/github \ 75 | "bsub -P PGC_CNV -q hour -R 'rusage[mem=4]' -o CNV_assoc_Quantitative.out" \ 76 | CNV_data \ 77 | CNV_data_resid \ 78 | 1000 \ 79 | CNV_data \ 80 | save 81 | 82 | ## output files in /assoc directory: CNV_data_cnv.cnv.qt.summary and CNV_data_cnv.cnv.qt.summary.mperm 83 | ## saved permutation file in /assoc directory: CNV_data_cnv.mperm.dump.all 84 | 85 | 86 | 87 | 88 | ## PART 3: Z-score association and family-wise error correction 89 | 90 | 91 | ## NOTE: this script uses the .mperm.dump.all files from the quantitative association script 92 | 93 | type <- c('cnv','del','dup') 94 | pnum <- 1000 95 | z_pval_5pct_FWER <- NA 96 | 97 | 98 | for (a in 1:length(type)) { 99 | 100 | ## association 101 | summcc <- read.table(paste("assoc/CNV_data_",type[a],".cnv.summary",sep=""),h=T) 102 | mpermcc <- read.table(paste("assoc/CNV_data_",type[a],".cnv.summary.mperm",sep=""),h=T) 103 | colnames(mpermcc)[3] <- 'casecon_EMP1' 104 | colnames(mpermcc)[4] <- 'casecon_EMP2' 105 | summqt <- read.table(paste("assoc/CNV_data_",type[a],".cnv.qt.summary",sep=""),h=T) 106 | mpermqt <- read.table(paste("assoc/CNV_data_",type[a],".cnv.qt.summary.mperm",sep=""),h=T) 107 | colnames(mpermqt)[4] <- 'quant_EMP1' 108 | colnames(mpermqt)[5] <- 'quant_EMP2' 109 | 110 | assoc <- cbind.data.frame(summcc,summqt[,4:6],mpermcc[,3:4],mpermqt[,4:5]) 111 | 112 | ## permutation 113 | pp <- scan(paste("assoc/CNV_data_",type[a],".mperm.dump.all",sep=""),nmax=((nrow(assoc)+1)*pnum)) 114 | perm <- t(matrix(pp,ncol=nrow(assoc)+1,byrow=TRUE)) 115 | perm <- perm[-1,2:ncol(perm)] #remove counter 116 | 117 | ## remove sites with NCNV==0 118 | filter <- assoc$NCNV==0 119 | assoc <- assoc[!(filter),] 120 | perm <- perm[!(filter),] 121 | 122 | perms <- ncol(perm) ## get permutation size 123 | 124 | ## get permuted variance 125 | perm_sd <- NA 126 | 127 | for (i in 1:nrow(assoc)){ 128 | pt_perm <- perm[i,] 129 | pt_diff <- pt_perm-assoc$M0[i] 130 | perm_sd[i] <- sd(pt_diff) 131 | # print(i) 132 | } ## END of i LooP 133 | 134 | assoc$perm_sd <- perm_sd 135 | 136 | ## convert to empirical z-score 137 | assoc$z <- (assoc$M1-assoc$M0)/assoc$perm_sd 138 | assoc$z_risk_pval <- pnorm(assoc$z,0,1,lower.tail=F) 139 | assoc$z_pval <- NA 140 | assoc$z_pval[assoc$z >= 0] <- 2*pnorm(assoc$z[assoc$z >= 0],0,1,lower.tail=F) 141 | assoc$z_pval[assoc$z < 0] <- 2*pnorm(assoc$z[assoc$z < 0],0,1,lower.tail=T) 142 | 143 | write.table(assoc,paste("assoc/CNV_Zscore_",type[a],"_",perms,"perm.assoc",sep=""),col=T,row=F,quo=F,sep='\t') 144 | 145 | ## get 95% quantile across permutations 146 | 147 | ## Get min p-val in each permutation 148 | z_min_pval <- NA 149 | 150 | for (i in 1:perms){ 151 | single_perm <- perm[,i] 152 | pt_diff <- single_perm-assoc$M0 153 | z <- pt_diff/perm_sd 154 | z_pval <- NA 155 | z_pval[z >= 0] <- 2*pnorm(z[z >= 0],0,1,lower.tail=F) 156 | z_pval[z < 0] <- 2*pnorm(z[z < 0],0,1,lower.tail=T) 157 | z_min_pval[i] <- min(z_pval) 158 | # print(paste('perm',i)) 159 | } ## END of i LooP 160 | 161 | ## get 95% quantile of max Z-scores 162 | z_pval_5pct_FWER[a] <- as.numeric(quantile(z_min_pval,0.05)) 163 | 164 | print(a) 165 | 166 | } ## END of a LooP 167 | 168 | ## combine 169 | data <- cbind.data.frame(type,z_pval_5pct_FWER) 170 | write.table(data,paste("assoc/CNV_Zscore_",perms,"perm_FWER.txt",sep=""),col=T,row=F,quo=F,sep='\t') 171 | 172 | 173 | 174 | 175 | 176 | 177 | ## PART 4: Manhattan Plot 178 | 179 | 180 | ## graphing directory (where will my graphs be printed?) 181 | graph_dir <- '/home/unix/howrigan/public_html/pgc_cnv/github' 182 | 183 | ## CNV types and permutation amount 184 | type <- c('cnv','del','dup') 185 | perms <- 999 186 | 187 | 188 | ## read in family-wise error correction 189 | fwer <- read.table('assoc/CNV_Zscore_999perm_FWER.txt',h=T) 190 | 191 | ## load graphing resources (may need to install ggplot2 using install.packages('ggplot2')) 192 | library(ggplot2) 193 | source('Manhattan.R') 194 | 195 | 196 | 197 | for (a in 1:length(type)) { 198 | 199 | 200 | ## read in association results 201 | res <- read.table(paste("assoc/CNV_Zscore_",type[a],"_",perms,"perm.assoc",sep=""),h=T,stringsAsFactors=F) 202 | ## restrict to SNPs with >= 6 overlapping CNV 203 | res2 <- subset(res,res$NCNV >= 6) 204 | ## Select only relevant columns 205 | res3 <- res2[,c('CHR','SNP','BP','z_pval')] 206 | colnames(res3)[4] <- 'P' 207 | 208 | ## chromosome starts (use all available SNPs) 209 | chr.starts <- min(res$BP[res$CHR==1]) 210 | for (i in 2:23) { chr.starts[i] <- min(res$BP[res$CHR==i]) } 211 | ## chromosome ends 212 | chr.ends <- max(res$BP[res$CHR==1]) 213 | for (i in 2:23) { chr.ends[i] <- max(res$BP[res$CHR==i]) } 214 | ## chromosome adder 215 | adder <- c(0,cumsum(as.numeric(chr.ends))) 216 | 217 | ## formatting manhattan plot for sparse values (i.e. when chromosomes don't have qualified SNPs) 218 | ## create CHR start and endpoints 219 | CHR <- seq(1,23,1) 220 | P <- rep(1,23) 221 | chr.start.snps <- cbind.data.frame(CHR,chr.starts,chr.starts,P) 222 | names(chr.start.snps) <- c('CHR','SNP','BP','P') 223 | chr.end.snps <- cbind.data.frame(CHR,chr.ends,chr.ends,P) 224 | names(chr.end.snps) <- c('CHR','SNP','BP','P') 225 | chr.snps <- rbind(chr.start.snps,chr.end.snps) 226 | 227 | ## append to results 228 | result <- rbind(res3,chr.snps) 229 | 230 | ## format FWER correction 231 | fwer_pval <- fwer$z_pval_5pct_FWER[a] 232 | fwer_pval2 <- round(fwer_pval,3) 233 | fwer_pval2[which(fwer_pval < .001)] <- format(fwer_pval[which(fwer_pval < .001)],scientific=T,digits=2) 234 | 235 | ## get adjusted ymax for both p-values and FWER correction 236 | ymax_val <- max(c(-log10(fwer_pval),-log10(min(result$P)))) 237 | 238 | ## ==== GRAPH 239 | pdf(paste(sep="",graph_dir,"/CNV_association_",type[a],"_Manhattan.pdf"),height=6,width=12) 240 | 241 | par(mfrow=c(1,1)) 242 | 243 | ## PLOT 244 | manhattan(result,pch=16,cex=0.6,genomewideline=-log10(fwer_pval),colors=c("lightskyblue2","midnightblue"),suggestiveline=FALSE,cex.axis=0.8,main='',xaxt='n',ymax=ymax_val+1) 245 | 246 | axis(side = 1, at = adder, labels = FALSE, tck = -0.01) 247 | axis(side = 1, at = mid.vec(adder)[seq(1,length(adder),2)], labels = c(seq(1,22),'X')[seq(1,length(adder),2)], tck = 0,cex.axis=0.75) 248 | axis(side = 1, at = mid.vec(adder)[seq(2,length(adder),2)], labels = c(seq(1,22),'X')[seq(2,length(adder),2)], tck = 0,cex.axis=0.75) 249 | 250 | legend('topleft',legend=c(paste(type[a],' FWER correction = ',fwer_pval2,sep='')),cex=0.75,lty=1,lwd=2,col=c('red'),bty='n') 251 | 252 | 253 | dev.off() 254 | 255 | print(a) 256 | 257 | } ## END of a LooP 258 | 259 | 260 | 261 | 262 | 263 | 264 | ## PART 5: UCSC .bed and .bedGraph file 265 | 266 | 267 | ## creating .bed file of CNVs 268 | system("plink --noweb --cfile CNV_data --cnv-track --out CNV_data_UCSC_hg18") 269 | 270 | ## creating .bedGraph file of Z-score results 271 | type <- c('cnv','del','dup') 272 | perms <- 999 273 | 274 | for (i in 1:length(type)) { 275 | 276 | assoc <- read.table(paste('assoc/CNV_Zscore_',type[i],'_',perms,'perm.assoc',sep=''),h=T) 277 | summ <- read.table(paste('assoc/CNV_data_',type[i],'.cnv.summary',sep=''),h=T) 278 | 279 | assoc <- merge(assoc,summ[,c('SNP','BP','CHR')],by='SNP',all=T) ## Add in NCNV=0 spots 280 | assoc <- assoc[order(assoc$CHR.y,assoc$BP.y),] 281 | 282 | chr <- paste('chr',assoc$CHR.y,sep='') 283 | chr[chr=='chr23'] <- 'chrX' 284 | bp1 <- assoc$BP.y 285 | bp2 <- c(bp1[2:nrow(assoc)],bp1[nrow(assoc)]+2) 286 | bp2 <- bp2-1 287 | bp2[bp1 > bp2] <- bp1[bp1 > bp2]+1 288 | log10pval <- -log10(assoc$z_pval) ## choose which p-value to port into the .bedGraph 289 | 290 | dat <- cbind.data.frame(chr,bp1,bp2,log10pval) 291 | dat$log10pval[is.na(dat$log10pval)] <- 0 292 | write.table(dat,paste('assoc/CNV_data_UCSC_hg18_Zpval_',type[i],'.cnv.bedGraph',sep=''),col=F,row=F,quo=F,sep='\t') 293 | 294 | print(i) 295 | 296 | } ## END of i LooP 297 | 298 | ## ADD .bedGraph headers 299 | write(x="track type=bedGraph name=ALL description=\"CNV Zscore pval\" visibility=full autoScale=off viewLimits=0:7 color=0,100,0 altColor=0,100,200 priority=5 graphType=bar",file="assoc/bedGraph_header_CNV.txt") 300 | write(x="track type=bedGraph name=DEL description=\"DEL Zscore pval\" visibility=full autoScale=off viewLimits=0:7 color=100,0,0 altColor=0,100,200 priority=6 graphType=bar",file="assoc/bedGraph_header_DEL.txt") 301 | write(x="track type=bedGraph name=DUP description=\"DUP Zscore pval\" visibility=full autoScale=off viewLimits=0:7 color=0,0,100 altColor=0,100,200 priority=7 graphType=bar",file="assoc/bedGraph_header_DUP.txt") 302 | 303 | 304 | ## Combine headers and .bedGraph results into a single file 305 | system("cat assoc/bedGraph_header_CNV.txt assoc/CNV_data_UCSC_hg18_Zpval_cnv.cnv.bedGraph assoc/bedGraph_header_DEL.txt assoc/CNV_data_UCSC_hg18_Zpval_del.cnv.bedGraph assoc/bedGraph_header_DUP.txt assoc/CNV_data_UCSC_hg18_Zpval_dup.cnv.bedGraph > CNV_data_UCSC_hg18_Zpval.cnv.bedGraph") 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | -------------------------------------------------------------------------------- /CNV_assoc_CaseCon.R: -------------------------------------------------------------------------------- 1 | #! /usr/bin/Rscript 2 | 3 | ## CNV_assoc_CaseCon.R 4 | 5 | ## Author: Daniel P. Howrigan (daniel.howrigan@gmail.com) 6 | ## Last Modified: January 2016 7 | 8 | ## Example usage: 9 | ## Rscript CNV_assoc_CaseCon.R [working directory] [job commands] [input] [perm] [output] [save] 10 | 11 | ## working directory: /path/to/working/directory 12 | ## job commands: Job submission commands 13 | ## input: PLINK .cfile filename (CNV_data.cnv is entered as 'CNV_data') 14 | ## perm: number of permutations 15 | ## output: output filename 16 | ## save: whether or not to save permuted stats 17 | 18 | # wdir <- '/path/to/working/directory' 19 | # job <- "bsub -P PGC_CNV -q hour -R 'rusage[mem=4]' -o CNV_assoc_CaseCon.out" 20 | # input <- 'CNV_data' 21 | # perm <- 1000 22 | # output <- 'CNV_data' 23 | # save <- 'no-save' 24 | 25 | ## WARNING: saving permuted stats from a large number of permutations will create an extrememly large file (SNP x perm matrix) 26 | 27 | 28 | ## ----- REQUIREMENTS: 29 | 30 | ## PLINK and R installed 31 | ## PLINK .cfile: .cnv / .fam / .map file (need to do --cnv-make-map in PLINK if .map file is not provided) 32 | 33 | ## read in command line arguments 34 | args <- commandArgs(TRUE) 35 | wdir <- args[1] 36 | job <- args[2] 37 | input <- args[3] 38 | perm <- args[4] 39 | output <- args[5] 40 | save <- args[6] 41 | 42 | ## change to working directory 43 | setwd(wdir) 44 | 45 | ## create temporary subdirectory within working directory (will not overwrite existing directory) 46 | system('mkdir -p assoc') 47 | 48 | type <- c('','--cnv-del','--cnv-dup') 49 | type_name <- c('cnv','del','dup') 50 | 51 | 52 | ## Get summary statistics and association 53 | for (a in 1:length(type)) { 54 | 55 | if (save == 'no-save') { system(paste(job," plink --noweb --cfile ",input," ",type[a]," --mperm ",perm," --cnv-test-2sided --out assoc/",output,"_",type_name[a],sep="")) } 56 | if (save == 'save') { system(paste(job," plink --noweb --cfile ",input," ",type[a]," --mperm ",perm," --cnv-test-2sided --mperm-save-all --out assoc/",output,"_",type_name[a],sep="")) } 57 | 58 | } #END of a LOOP 59 | 60 | 61 | -------------------------------------------------------------------------------- /CNV_assoc_Quantitative.R: -------------------------------------------------------------------------------- 1 | #! /usr/bin/Rscript 2 | 3 | ## CNV_assoc_Quantitative.R 4 | 5 | ## Author: Daniel P. Howrigan (daniel.howrigan@gmail.com) 6 | ## Last Modified: January 2016 7 | 8 | ## Example usage: 9 | ## Rscript CNV_assoc_Quantitative.R [working directory] [job commands] [input] [phe] [perm] [output] [save] 10 | 11 | ## working directory: /path/to/working/directory 12 | ## job commands: Job submission commands 13 | ## input: PLINK .cfile filename (CNV_data.cnv is entered as 'CNV_data') 14 | ## phe: phenotype file 15 | ## perm: number of permutations 16 | ## output: output filename 17 | ## save: whether or not to save permuted stats 18 | 19 | # wdir <- '/path/to/working/directory' 20 | # job <- "bsub -P PGC_CNV -q hour -R 'rusage[mem=4]' -o CNV_assoc_Quantitative.out" 21 | # input <- 'CNV_data' 22 | # phe <- 'CNV_data_residual' 23 | # perm <- 1000 24 | # output <- 'CNV_data' 25 | # save <- 'save' 26 | 27 | ## WARNING: saving permuted stats from a large number of permutations will create an extrememly large file (SNP x perm matrix) 28 | 29 | ## ----- REQUIREMENTS: 30 | 31 | ## PLINK and R installed 32 | ## PLINK .cfile: .cnv / .fam / .map file (need to do --cnv-make-map in PLINK if .map file is not provided) 33 | ## PLINK .phe file (can have different name than cfile) 34 | 35 | ## read in command line arguments 36 | args <- commandArgs(TRUE) 37 | wdir <- args[1] 38 | job <- args[2] 39 | input <- args[3] 40 | phe <- args[4] 41 | perm <- args[5] 42 | output <- args[6] 43 | save <- args[7] 44 | 45 | ## change to working directory 46 | setwd(wdir) 47 | 48 | ## create temporary subdirectory within working directory (will not overwrite existing directory) 49 | system('mkdir -p assoc') 50 | 51 | type <- c('','--cnv-del','--cnv-dup') 52 | type_name <- c('cnv','del','dup') 53 | 54 | 55 | ## Get summary statistics and association 56 | for (a in 1:length(type)) { 57 | 58 | if (save=='no-save') { system(paste(job," plink --noweb --cfile ",input," ",type[a]," --mperm ",perm," --pheno ",phe,".phe --pheno-name AFF_residual --out assoc/",output,"_",type_name[a],sep="")) } 59 | if (save=='save') { system(paste(job," plink --noweb --cfile ",input," ",type[a]," --mperm ",perm," --pheno ",phe,".phe --pheno-name AFF_residual --mperm-save-all --out assoc/",output,"_",type_name[a],sep="")) } 60 | 61 | } #END of a LOOP 62 | 63 | 64 | -------------------------------------------------------------------------------- /CNV_burden_level_association.R: -------------------------------------------------------------------------------- 1 | 2 | ## CNV_burden_level_association.R 3 | 4 | ## Author: Daniel P. Howrigan (daniel.howrigan@gmail.com) 5 | ## Last Modified: January 2016 6 | 7 | 8 | ## ----- DESCRIPTION: 9 | 10 | ## Interactive R script to read and graph CNV burden results 11 | 12 | ## - Running CNV burden script 13 | ## - specify parameters to view and graph 14 | ## - show main results 15 | ## - Forest plot 16 | 17 | 18 | ## ----- REQUIREMENTS: 19 | 20 | ## PLINK and R installed 21 | ## PLINK .cfile: .cnv / .fam / .map file (need to do --cnv-make-map in PLINK if not provided) 22 | ## .phe file with platform/dataset information 23 | ## .cfile and .phe file must have the same name 24 | ## gene list file (currently using hg18_refGene_plink.txt) 25 | 26 | 27 | ## ----- SCRIPT SET UP: 28 | 29 | ## PART 1: Running CNV burden script 30 | ## PART 2: Read in burden results and set parameters 31 | ## PART 3: Quick view of results 32 | ## PART 4: CNV burden KB forest plot 33 | 34 | 35 | ## ----- NOTES: 36 | 37 | ## This script is currently designed to be run interactively, so there are no input/output arguments. 38 | ## This script is not optimized to handle various datasets, so adjustements may be needed to correctly format results 39 | 40 | ## Here are the main formatting options to adjust to fit values correctly: 41 | 42 | ## I created a row with all NAs to separate the PGC results from each dataset. You can remove this in the 'dataset information' setup 43 | 44 | ## Margins around graph: 45 | # par(oma=c(1,22,1,1),xpd=FALSE) 46 | 47 | ## width of x-axis in graph is relative to the largest confidence intervals 48 | # xrange <- xlims[2]-xlims[1] 49 | 50 | ## Margin information parameters 51 | # text(x=rep(xlims[1]-(1*xrange),rows), 52 | # y=1:rows,as.character(bn1$data_set), 53 | # pos=4,xpd=NA,cex=1,font=c(2,rep(1,rows-1))) 54 | 55 | ## 'rows' is an object I created that has the number of rows graphed in the forest plot 56 | ## 'x=' is the relative position outside of the graph for each value, where xlims[1]-(1*xrange) is one graph length to the left of the start of the graph 57 | ## 'y=' is the position on the y-axis (1 being the bottom and going up) 58 | ## 'cex=' adjusts the size of the text 59 | ## 'font=' 1 is regular, 2 is bold 60 | 61 | 62 | 63 | 64 | 65 | ## PART 1: Running CNV burden script 66 | 67 | 68 | ## Example submission to Broad LSF cluster: 69 | 70 | bsub -P CNV -q priority -R 'rusage[mem=8]' -o CNV_burden_platform.out Rscript --verbose CNV_burden_platform.R \ 71 | /humgen/atgu1/fs03/wip/howrigan/pgc_cnv/github \ 72 | CNV_data \ 73 | hg18_refGene_plink.txt \ 74 | CNV_burden_platform 75 | 76 | ## NOTE: details of burden script are available at the start the script code 77 | 78 | 79 | 80 | ## PART 2: Read in burden results and set parameters 81 | 82 | ## read in burden results 83 | bn <- read.table('CNV_burden_platform.burden',h=T,stringsAsFactors=F) 84 | 85 | ## read in phenotype data 86 | phe <- read.table('CNV_data.phe',h=T,stringsAsFactors=F) 87 | 88 | ## graphing directory (where will my graphs be printed?) 89 | graph_dir <- '/home/unix/howrigan/private_html/pgc_cnv/github' 90 | 91 | 92 | ## dataset information sorted by dataset size 93 | dat <- sort(table(phe$CNV_platform),decreasing=F) 94 | data_set <- c(names(dat),NA,'PGC') 95 | data_size <- c(as.integer(dat),NA,nrow(phe)) 96 | cas <- sort(table(phe$CNV_platform[phe$AFF==2]),decreasing=F) 97 | cas_size <- c(as.integer(cas),NA,sum(cas)) 98 | con <- sort(table(phe$CNV_platform[phe$AFF==1]),decreasing=F) 99 | con_size <- c(as.integer(con),NA,sum(con)) 100 | ## You should adjust the colors column to your liking 101 | colors <- c(rep('blue',length(data_set)-2),NA,'black') 102 | data <- cbind.data.frame(data_set,data_size,cas_size,con_size,colors) 103 | data$ordering <- seq(1,nrow(data),1) 104 | 105 | 106 | ## specify parameters to view and graph 107 | type <- c('allCNV','del','dup') 108 | region <- c('allregions','novelregions') 109 | size <- c('Allsize','100kb','100-200kb','200-500kb','500kb') 110 | freq <- c('Allfreq','singleton','2-10','11plus') 111 | 112 | 113 | ## PART 3: Quick view of results 114 | 115 | for (a in 1:length(type)) { 116 | for (b in 1:length(region)) { 117 | for (c in 1:length(size)) { 118 | for (d in 1:length(freq)) { 119 | 120 | 121 | ## Reduce burden file to specific parameters 122 | bn0 <- bn[bn$CNV_type == type[a] & 123 | bn$region_set == region[b] & 124 | bn$CNV_size==size[c] & 125 | bn$CNV_freq == freq[d],] 126 | 127 | options(width=200) 128 | 129 | print(bn0[,c('data_set','region_set','CNV_type','CNV_freq','NSEG_rate','plink_AFF_CNV','plink_UNAFF_CNV','plink_CASCON_RATE','NSEG_cas_rate','NSEG_con_rate','NSEG_glm_OR','NSEG_glm_pval')]) 130 | cat('\n') 131 | print(bn0[,c('data_set','region_set','CNV_type','CNV_freq','KB_rate','plink_AFF_TOTKB','plink_UNAFF_TOTKB','plink_CASCON_TOTKB','KB_cas_rate','KB_con_rate','KB_glm_OR','KB_glm_pval')]) 132 | cat('\n') 133 | print(bn0[,c('data_set','region_set','CNV_type','CNV_freq','COUNT_rate','plink_AFF_GRATE','plink_UNAFF_GRATE','plink_CASCON_GRATE','COUNT_cas_rate','COUNT_con_rate','COUNT_glm_OR','COUNT_glm_pval')]) 134 | cat('\n') 135 | print(bn0[,c('data_set','region_set','CNV_type','CNV_freq','NGENE_rate','plink_AFF_GRATE','plink_UNAFF_GRATE','plink_CASCON_GRATE','NGENE_cas_rate','NGENE_con_rate','NGENE_glm_OR','NGENE_glm_pval')]) 136 | cat('\n') 137 | print(bn0[,c('data_set','region_set','CNV_type','CNV_freq','NSEG_GENIC_rate','plink_AFF_GPROP','plink_UNAFF_GPROP','plink_CASCON_GPROP','NSEG_GENIC_cas_rate','NSEG_GENIC_con_rate','NSEG_GENIC_glm_OR','NSEG_GENIC_glm_pval')]) 138 | cat('\n') 139 | print(bn0[,c('data_set','region_set','CNV_type','CNV_freq','KB_GENIC_rate','KB_GENIC_cas_rate','KB_GENIC_con_rate','KB_GENIC_glm_OR','KB_GENIC_glm_pval')]) 140 | cat('\n') 141 | print(bn0[,c('data_set','region_set','CNV_type','CNV_freq','NSEG_NONGENIC_rate','NSEG_NONGENIC_cas_rate','NSEG_NONGENIC_con_rate','NSEG_NONGENIC_glm_OR','NSEG_NONGENIC_glm_pval')]) 142 | cat('\n') 143 | print(bn0[,c('data_set','region_set','CNV_type','CNV_freq','KB_NONGENIC_rate','KB_NONGENIC_cas_rate','KB_NONGENIC_con_rate','KB_NONGENIC_glm_OR','KB_NONGENIC_glm_pval')]) 144 | cat('\n') 145 | 146 | cat(paste0('a=',a,'; b=',b,'; c=',c,'; d=',d,'\n')) 147 | 148 | } ## END of d LooP 149 | } ## END of c LooP 150 | } ## END of b LooP 151 | } ## END of a LooP 152 | 153 | 154 | 155 | 156 | ## PART 4: CNV burden KB forest plot 157 | 158 | ## Burden type 159 | burden <- c('NSEG','KB','COUNT','NGENE','NSEG_GENIC','KB_GENIC','NSEG_NONGENIC','KB_NONGENIC') 160 | burden_names <- c('CNV','KB','Genes','Genes','CNV','KB','CNV','KB') 161 | 162 | # a=1 ; b=1 ; c=1 ; d=1; e=7 163 | # a=1; b=1; c=2; d=4; e=8 164 | 165 | for (a in 1:length(type)) { 166 | for (b in 1:length(region)) { 167 | for (c in 1:length(size)) { 168 | for (d in 1:length(freq)) { 169 | for (e in 1:length(burden)) { 170 | 171 | ## Reduce burden file to specific parameters 172 | bn0 <- bn[bn$CNV_type == type[a] & 173 | bn$region_set == region[b] & 174 | bn$CNV_freq == freq[c] & 175 | bn$CNV_size==size[d],] 176 | 177 | ## merge with phenotype data 178 | bn1 <- merge(data,bn0,by='data_set',all.x=T) 179 | bn1 <- bn1[order(bn1$ordering,decreasing=T),] 180 | bn1$colors <- as.character(bn1$colors) 181 | 182 | ## specify burden measurement 183 | con_rate <- eval(parse(text=paste(sep='','bn1$',burden[e],'_con_rate'))) 184 | OR <- eval(parse(text=paste(sep='','bn1$',burden[e],'_glm_OR'))) 185 | lowerCI <- eval(parse(text=paste(sep='','bn1$',burden[e],'_glm_lowerCI'))) 186 | upperCI <- eval(parse(text=paste(sep='','bn1$',burden[e],'_glm_upperCI'))) 187 | pval <- eval(parse(text=paste(sep='','bn1$',burden[e],'_glm_pval'))) 188 | plot_titles <- paste(c('Platform','Cases','Controls',burden_names[e],'pval','OR'),sep='') 189 | 190 | ## removing infinite CIs 191 | lowerCI[lowerCI==-Inf] <- NA ; lowerCI[lowerCI==Inf] <- NA 192 | lowerCI[upperCI==-Inf] <- NA ; lowerCI[upperCI==Inf] <- NA 193 | upperCI[upperCI==-Inf] <- NA ; upperCI[upperCI==Inf] <- NA 194 | upperCI[lowerCI==-Inf] <- NA ; upperCI[lowerCI==Inf] <- NA 195 | 196 | 197 | ## ===== GRAPH 198 | pdf(paste(graph_dir,"/CNV_burden_platform_",type[a],"_",region[b],"_",size[c],"_",freq[d],"_",burden[e],"_forestplot.pdf",sep=""),height=8.5,width=11) 199 | 200 | op <- par() 201 | par(oma=c(1,22,1,1),xpd=FALSE) 202 | 203 | ## point sizes 204 | bn1$cexsize <- (bn1$data_size/max(bn1$data_size,na.rm=T))*2 205 | bn1$cexsize[!is.na(bn1$cexsize)] <- bn1$cexsize[!is.na(bn1$cexsize)] + 1.8 206 | 207 | #confidence intervals 208 | xlims <- c(min(lowerCI,na.rm=T)-(0.1*max(upperCI,na.rm=T)), 209 | max(upperCI,na.rm=T)+(0.05*max(upperCI,na.rm=T))) 210 | xrange <- xlims[2]-xlims[1] 211 | 212 | ## override soft plotting axis in event of non-numerical CIs 213 | if (xrange==-Inf) { xlims <- c(0,2); xrange <- xlims[2]-xlims[1] } 214 | 215 | #plot the betas & SE(betas) 216 | plot(OR,seq(1,nrow(bn1),1),axes=F,xlab='Odds Ratio (95% CI)',ylab='',col=bn1$colors,main='',pch=20,cex=0.5,xlim=xlims) 217 | 218 | axis(1) 219 | 220 | ## 95% CI lines 221 | for (x in 2:nrow(bn1)){lines(x=c(lowerCI[x],upperCI[x]),y=c(x,x),col=bn1$colors[x],lwd=3)} 222 | 223 | ## size oriented Points 224 | points(OR[2:nrow(bn1)],seq(2,nrow(bn1),1),pch=20,col='black',cex=bn1$cexsize[2:nrow(bn1)]) 225 | 226 | ## combined line 227 | diamond.x <- c(lowerCI[1],OR[1],upperCI[1],OR[1],lowerCI[1]) 228 | diamond.y <- c(1,1.1,1,0.9,1) 229 | polygon(diamond.x,diamond.y,col='black',border=T) 230 | 231 | ## Null line 232 | abline(v=1,lty=1,lwd=.5) 233 | 234 | ## Combined data line 235 | abline(v=OR[1],lwd=.5,lty=2) 236 | 237 | 238 | ## === Margin Information 239 | 240 | rows <- length(bn1$data_set) 241 | 242 | ## Sample names 243 | text(x=rep(xlims[1]-(1*xrange),rows), 244 | y=1:rows,as.character(bn1$data_set), 245 | pos=4,xpd=NA,cex=1,font=c(2,rep(1,rows-1))) 246 | ## cases 247 | text(x=rep(xlims[1]-(0.82*xrange),rows), 248 | y=1:rows,as.character(bn1$cas_size), 249 | pos=4,xpd=NA,cex=1,font=c(2,rep(1,rows-1))) 250 | ## controls 251 | text(x=rep(xlims[1]-(0.64*xrange),rows), 252 | y=1:rows,as.character(bn1$con_size), 253 | pos=4,xpd=NA,cex=1,font=c(2,rep(1,rows-1))) 254 | ## control burden rate 255 | text(x=rep(xlims[1]-(0.45*xrange),rows), 256 | y=1:rows,round(con_rate,2), 257 | pos=4,xpd=NA,cex=1,font=c(2,rep(1,rows-1))) 258 | ## p-values 259 | pvals <- round(pval,3) 260 | pvals[which(pvals < .001)] <- format(pval[which(pvals < .001)],scientific=T,digits=2) 261 | pvals[is.na(con_rate)] <- NA 262 | text(x=rep(xlims[1]-(0.3*xrange),rows), 263 | y=1:rows,pvals, 264 | pos=4,xpd=NA,cex=1,font=c(2,rep(1,rows-1))) 265 | ## Odds ratio 266 | text(x=rep(xlims[1]-(0.15*xrange),rows), 267 | y=1:rows,round(OR,2), 268 | pos=4,xpd=NA,cex=1,font=c(2,rep(1,rows-1))) 269 | 270 | 271 | ## --- Titles 272 | xpts1 <- c(xlims[1]-(1*xrange),xlims[1]-(0.82*xrange),xlims[1]-(0.64*xrange),xlims[1]-(0.45*xrange),xlims[1]-(0.3*xrange),xlims[1]-(0.15*xrange)) 273 | text(x=xpts1, 274 | y=rows+0.5, 275 | labels=plot_titles, 276 | pos=4,xpd=NA,cex=1,font=2) 277 | 278 | 279 | dev.off() 280 | 281 | print(paste('a=',a,'; b=',b,'; c=',c,'; d=',d,'; e=',e,sep='')) 282 | 283 | } ## END of a LooP 284 | } ## END of b LooP 285 | } ## END of c LooP 286 | } ## END of d LooP 287 | } ## END of e LooP 288 | 289 | 290 | -------------------------------------------------------------------------------- /CNV_burden_platform.R: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## CNV_burden_platform.R 4 | 5 | ## Author: Daniel P. Howrigan (daniel.howrigan@gmail.com) 6 | ## Last Modified: January 2016 7 | 8 | 9 | ## ----- LSF example usage: 10 | 11 | ## bsub -P CNV -q priority -R 'rusage[mem=8]' -o CNV_burden_platform.out Rscript --verbose CNV_burden_platform.R [working directory] [input] [gene file] [output] 12 | 13 | ## working directory: /path/to/working/directory 14 | ## input: PLINK .cfile filename (CNV_data.cnv is entered as 'CNV_data') 15 | ## gene_file: CHR/START/STOP with gene coordinates 16 | ## output: .burden output filename 17 | 18 | # wdir <- '/path/to/working/directory' 19 | # input <- 'CNV_data' 20 | # gene_file <- 'hg18_refGene_plink.txt' 21 | # output <- 'CNV_burden_platform' 22 | 23 | 24 | ## ----- REQUIREMENTS: 25 | 26 | ## PLINK and R installed 27 | ## PLINK .cfile: .cnv / .fam / .map file (need to do --cnv-make-map in PLINK if not provided) 28 | ## .phe file with platform/dataset information 29 | ## .cfile and .phe file must have the same name 30 | ## gene list file (currently using hg18_refGene_plink.txt) 31 | 32 | 33 | ## ----- DESCRIPTION: 34 | 35 | ## Automated script to run CNV burden tests on a variety of datasets, CNV types, and CNV property filters 36 | 37 | ## 2 main parts: 38 | 39 | ## 1) Applying dataset and CNV filters 40 | 41 | ## data_set - Filter on specific datasets 42 | ## CNV_type - CNV deletions (losses), duplications (gains), and all CNVs 43 | ## region_set - exclude/include specific genomic regions 44 | ## CNV_size - Filter on specific CNV size 45 | ## CNV_frequency - Filter on specific CNV frequency 46 | 47 | ## 2) Burden analysis 48 | 49 | ## PLINK burden analysis, which is limited to case/control comparisons (no covariates included) 50 | ## - Provides case/control descriptive burden statistics 51 | ## - uses permutation to generate p-values (not used) 52 | ## - Does not split CNVs into genic and non-genic CNVs 53 | 54 | ## R burden analysis, which includes covariates in logistic regression model 55 | ## - uses asymptotic p-values from glm() model (used) 56 | ## - Also splits CNVs into genic and non-genic CNVs 57 | ## - glm model specification: 58 | ## - aff ~ [CNV burden measure] + SEX + CNV_platform + C1 + C2 + C3 + C4 + C8 (full dataset test) 59 | ## - aff ~ [CNV burden measure] + SEX + C1 + C2 + C3 + C4 + C8 (within platform test) 60 | 61 | ## Burden analyses: 62 | ## NSEG - number of CNV segments 63 | ## KB - total KB of CNV segments 64 | ## COUNT - number of genes in CNV segments (as provided by gene file) 65 | ## NGENE - number of genes in CNV segments (as provided by SCORE column in .cnv file) 66 | ## GENIC - restricting to only CNVs that cover genes 67 | ## NONGENIC - restricting to only CNVs that do not cover genes 68 | 69 | 70 | ## ----- SCRIPT SET UP: 71 | 72 | ## PART 1: CNV burden filters 73 | ## PART 2: Variables: Descriptives and Statistics 74 | ## PART 3: CNV burden loop 75 | ## PART 3.1: Setting up burden loop 76 | ## PART 3.2: Applying PLINK filters 77 | ## PART 3.3: Checking CNV burden coverage 78 | ## PART 3.4: Reading PLINK burden results 79 | ## PART 3.5: CNV burden analysis in R 80 | ## PART 3.6: Combining all results together and writing to file 81 | 82 | 83 | ## ----- NOTES: 84 | ## To change the filters, make adjustments in PART 1 (make sure to adjust both name and filter) 85 | ## To change gene list file, make adjustments in the system commands in PART 3.2 86 | ## To change R glm model, make adjustments in the model in PART 3.5 87 | ## To change the .status report output, make adjustments in PART 3.1 88 | 89 | ## KB burden excludes individuals the do not carry any CNVs 90 | 91 | 92 | 93 | ## PART 1: CNV burden filters 94 | 95 | ## dataset 96 | ## CNV type 97 | ## CNV frequency 98 | ## CNV size 99 | 100 | ## read in command line arguments 101 | args <- commandArgs(TRUE) 102 | wdir <- args[1] 103 | input <- args[2] 104 | gene_file <- args[3] 105 | output <- args[4] 106 | 107 | ## PLINK permutation count (currently ignoring PLINK p-values) 108 | perm <- 100 109 | 110 | ## change to working directory 111 | setwd(wdir) 112 | 113 | ## create temporary subdirectory within working directory (will not overwrite existing directory) 114 | system('mkdir -p burden_loop') 115 | 116 | ## read in individual data 117 | phe <- read.table(paste(input,'.phe',sep=''),h=T) 118 | 119 | ## dataset - sort by sizes 120 | dat <- sort(table(phe$CNV_platform),decreasing=T) 121 | data_name <- c('PGC',names(dat)) 122 | 123 | ## write out PLINK ID files 124 | for (i in 2:length(data_name)) { 125 | ID <- phe[phe$CNV_platform==data_name[i],1:2] 126 | write.table(ID,paste('burden_loop/',data_name[i],'.ID',sep=''),col=F,row=F,quo=F,sep='\t') 127 | } 128 | 129 | type_name <- c('allCNV','del','dup') 130 | region_name <- c('allregions','novelregions') 131 | size_name <- c('Allsize','100kb','100-200kb','200-500kb','500kb') 132 | freq_name <- c('Allfreq','singleton','2-10','11plus') 133 | 134 | # CNV burden filters 135 | data <- c('',paste(' --keep burden_loop/',data_name[2:length(data_name)],'.ID',sep='')) 136 | 137 | type <- c('', 138 | '--cnv-del', 139 | '--cnv-dup') 140 | 141 | region <- c('','--cnv-exclude hg18_implicated_CNV.txt --cnv-region-overlap 0.01') 142 | 143 | size <- c('', 144 | '--cnv-max-kb 100', 145 | '--cnv-kb 100 --cnv-max-kb 500', 146 | '--cnv-kb 500') 147 | 148 | freq <- c('--cnv-overlap 0.50', 149 | '--cnv-overlap 0 --cnv-freq-exclude-above 1', 150 | '--cnv-overlap 0.50 --cnv-freq-exclude-above 10', 151 | '--cnv-overlap 0.50 --cnv-freq-exclude-below 11') 152 | 153 | 154 | 155 | ## PART 2: Variables: Descriptives and Statistics 156 | 157 | ## Note: we can get gene count numbers with --cnv-count 158 | 159 | ## Files: 160 | ## - .cnv.indiv 161 | ## - .cnv.grp.summary 162 | ## - .cnv.summary.mperm 163 | ## - .cnv with gene annotation 164 | 165 | ## FILTER sets: 166 | 167 | data_set <- NA; region_set <- NA; CNV_type <- NA; CNV_freq <- NA; CNV_size <- NA 168 | 169 | ## PLINK descriptives and stats: 170 | 171 | plink_AFF_CNV <- NA; plink_AFF_RATE <- NA; plink_AFF_PROP <- NA; plink_AFF_TOTKB <- NA; plink_AFF_AVGKB <- NA; plink_AFF_GRATE <- NA; plink_AFF_GPROP <- NA; plink_AFF_GRICH <- NA 172 | plink_UNAFF_CNV <- NA; plink_UNAFF_RATE <- NA; plink_UNAFF_PROP <- NA; plink_UNAFF_TOTKB <- NA; plink_UNAFF_AVGKB <- NA; plink_UNAFF_GRATE <- NA; plink_UNAFF_GPROP <- NA; plink_UNAFF_GRICH <- NA 173 | plink_CASCON_CNV <- NA; plink_CASCON_RATE <- NA; plink_CASCON_PROP <- NA; plink_CASCON_TOTKB <- NA; plink_CASCON_AVGKB <- NA; plink_CASCON_GRATE <- NA; plink_CASCON_GPROP <- NA; plink_CASCON_GRICH <- NA 174 | plink_CASCON_RATE_EMP1 <- NA; plink_CASCON_PROP_EMP1 <- NA; plink_CASCON_TOTKB_EMP1 <- NA; plink_CASCON_AVGKB_EMP1 <- NA; plink_CASCON_GRATE_EMP1 <- NA; plink_CASCON_GPROP_EMP1 <- NA; plink_CASCON_GRICH_EMP1 <- NA 175 | 176 | ## R descriptives and stats: 177 | 178 | ## NSEG sum 179 | ## case mean 180 | ## control mean 181 | ## pearson resid ~ asymptotic t-value 182 | ## pearson resid ~ asymptotic p-value 183 | ## permuted p-value for 10,000 permutations of each t-value 184 | 185 | FULL_SAMPLE_SIZE <- NA; CNV_CARRIER_SAMPLE_SIZE <- NA; CNV_GENIC_CARRIER_SAMPLE_SIZE <- NA; CNV_NONGENIC_CARRIER_SAMPLE_SIZE <- NA 186 | NSEG <- NA; NSEG_GENIC <- NA; NSEG_NONGENIC <- NA 187 | 188 | NSEG_rate <- NA; NSEG_cas_rate <- NA; NSEG_con_rate <- NA; NSEG_cascon_ratio <- NA; NSEG_glm_OR <- NA; NSEG_glm_se <- NA; NSEG_glm_tval <- NA; NSEG_glm_pval <- NA; NSEG_perm_pval <- NA; NSEG_glm_lowerCI <- NA; NSEG_glm_upperCI <- NA 189 | KB_rate <- NA; KB_cas_rate <- NA; KB_con_rate <- NA; KB_cascon_ratio <- NA; KB_glm_OR <- NA; KB_glm_se <- NA; KB_glm_tval <- NA; KB_glm_pval <- NA; KB_perm_pval <- NA; KB_glm_lowerCI <- NA; KB_glm_upperCI <- NA 190 | COUNT_rate <- NA; COUNT_cas_rate <- NA; COUNT_con_rate <- NA; COUNT_cascon_ratio <- NA; COUNT_glm_OR <- NA; COUNT_glm_se <- NA; COUNT_glm_tval <- NA; COUNT_glm_pval <- NA; COUNT_perm_pval <- NA; COUNT_glm_lowerCI <- NA; COUNT_glm_upperCI <- NA 191 | NGENE_rate <- NA; NGENE_cas_rate <- NA; NGENE_con_rate <- NA; NGENE_cascon_ratio <- NA; NGENE_glm_OR <- NA; NGENE_glm_se <- NA; NGENE_glm_tval <- NA; NGENE_glm_pval <- NA; NGENE_perm_pval <- NA; NGENE_glm_lowerCI <- NA; NGENE_glm_upperCI <- NA 192 | 193 | ## GENIC CNV 194 | NSEG_GENIC_rate <- NA; NSEG_GENIC_cas_rate <- NA; NSEG_GENIC_con_rate <- NA; NSEG_GENIC_cascon_ratio <- NA; NSEG_GENIC_glm_OR <- NA; NSEG_GENIC_glm_se <- NA; NSEG_GENIC_glm_tval <- NA; NSEG_GENIC_glm_pval <- NA; NSEG_GENIC_perm_pval <- NA; NSEG_GENIC_glm_lowerCI <- NA; NSEG_GENIC_glm_upperCI <- NA 195 | KB_GENIC_rate <- NA; KB_GENIC_cas_rate <- NA; KB_GENIC_con_rate <- NA; KB_GENIC_cascon_ratio <- NA; KB_GENIC_glm_OR <- NA; KB_GENIC_glm_se <- NA; KB_GENIC_glm_tval <- NA; KB_GENIC_glm_pval <- NA; KB_GENIC_perm_pval <- NA; KB_GENIC_glm_lowerCI <- NA; KB_GENIC_glm_upperCI <- NA 196 | 197 | ## NONGENIC CNV 198 | NSEG_NONGENIC_rate <- NA; NSEG_NONGENIC_cas_rate <- NA; NSEG_NONGENIC_con_rate <- NA; NSEG_NONGENIC_cascon_ratio <- NA; NSEG_NONGENIC_glm_OR <- NA; NSEG_NONGENIC_glm_se <- NA; NSEG_NONGENIC_glm_tval <- NA; NSEG_NONGENIC_glm_pval <- NA; NSEG_NONGENIC_perm_pval <- NA; NSEG_NONGENIC_glm_lowerCI <- NA; NSEG_NONGENIC_glm_upperCI <- NA 199 | KB_NONGENIC_rate <- NA; KB_NONGENIC_cas_rate <- NA; KB_NONGENIC_con_rate <- NA; KB_NONGENIC_cascon_ratio <- NA; KB_NONGENIC_glm_OR <- NA; KB_NONGENIC_glm_se <- NA; KB_NONGENIC_glm_tval <- NA; KB_NONGENIC_glm_pval <- NA; KB_NONGENIC_perm_pval <- NA; KB_NONGENIC_glm_lowerCI <- NA; KB_NONGENIC_glm_upperCI <- NA 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | ## PART 3: CNV burden loop 209 | 210 | 211 | ## getting full count of burden analyses 212 | tot <- length(data_name)*length(type_name)*length(region_name)*length(freq_name)*length(size_name) 213 | 214 | 215 | ## PART 3.1: Setting up burden loop 216 | 217 | ## adjustments to .phe file for burden testinf 218 | phe$matchID <- paste(phe$FID,':',phe$IID,sep='') 219 | phe$aff <- phe$AFF - 1 220 | 221 | X <- 0 ## loop COUNTER 222 | 223 | for (a in 1:length(data_name)){ 224 | for (b in 1:length(type_name)){ 225 | for (c in 1:length(region_name)){ 226 | for (d in 1:length(freq_name)){ 227 | for (e in 1:length(size_name)){ 228 | 229 | X <- X+1 230 | 231 | ## assign specific loop parameters 232 | data2 <- data[a] 233 | ## combining CNV type and region filtering 234 | type2 <- type[b] 235 | region2 <- region[c] 236 | freq2 <- freq[d] 237 | size2 <- size[e] 238 | 239 | 240 | data_set[X] <- data_name[a] 241 | CNV_type[X] <- type_name[b] 242 | region_set[X] <- region_name[c] 243 | CNV_freq[X] <- freq_name[d] 244 | CNV_size[X] <- size_name[e] 245 | 246 | ## write out status report 247 | cat('iteration =',X,'of',tot,'\n','data_set',a,'=',data_name[a],'\n','CNV_type',b,'=',type_name[b],'\n','region_set',c,'=',region_name[c],'\n','CNV_freq',d,'=',freq_name[d],'\n','CNV_size',e,'=',size_name[e],'\n',file=paste(output,".status",sep=''),append=F) 248 | 249 | 250 | 251 | ## PART 3.2: Applying PLINK filters 252 | 253 | 254 | ## =============== Filter by data, CNV type, and CNV regions first 255 | 256 | system(paste("plink --noweb --cfile ",input," ",data2," ",type2," ",region2," --cnv-write --out burden_loop/type_loop",sep="")) 257 | ## gene cnv-make-map 258 | system("plink --noweb --cfile burden_loop/type_loop --cnv-make-map --out burden_loop/type_loop") 259 | 260 | 261 | 262 | ## =============== Non 2-10 count CNV burden 263 | if (freq_name[d]!='2-10'){ 264 | 265 | ## --- Frequency pruning 266 | system(paste("plink --noweb --cfile burden_loop/type_loop ",freq2," --cnv-write --out burden_loop/freq_loop",sep="")) 267 | ## gene cnv-make-map 268 | system("plink --noweb --cfile burden_loop/freq_loop --cnv-make-map --out burden_loop/freq_loop") 269 | 270 | 271 | ## --- Size pruning 272 | system(paste("plink --noweb --cfile burden_loop/freq_loop ",size2," --cnv-write --out burden_loop/size_loop",sep="")) 273 | 274 | ## Adding gene/exon count separately 275 | system("plink --noweb --cfile burden_loop/size_loop --cnv-make-map --out burden_loop/size_loop") 276 | 277 | system(paste("plink --noweb --cfile burden_loop/size_loop --cnv-indiv-perm --mperm ",perm," --cnv-count ",gene_file," --out burden_loop/burden_loop",sep="")) 278 | 279 | } ## END of non-2-6 count levels 280 | 281 | 282 | 283 | ## =============== 2-10 count CNV burden 284 | 285 | if (freq_name[d]=='2-10'){ 286 | 287 | ## -- step 1: Remove the > 10 CNV with 50% overlap 288 | 289 | 290 | ## --- Frequency pruning 291 | system(paste("plink --noweb --cfile burden_loop/type_loop ",freq2," --cnv-write --out burden_loop/freq_loop",sep="")) 292 | ## gene cnv-make-map 293 | system("plink --noweb --cfile burden_loop/freq_loop --cnv-make-map --out burden_loop/freq_loop") 294 | 295 | 296 | ## --- Size pruning 297 | system(paste("plink --noweb --cfile burden_loop/freq_loop ",size2," --cnv-write --out burden_loop/size_loop",sep="")) 298 | ## gene cnv-make-map 299 | system("plink --noweb --cfile burden_loop/size_loop --cnv-make-map --out burden_loop/size_loop") 300 | 301 | 302 | ## -- step 2: Now remove the non-overlapped singletons 303 | system("plink --noweb --cfile burden_loop/size_loop --cnv-overlap 0 --cnv-freq-exclude-below 2 --cnv-write --out burden_loop/size_loop") 304 | 305 | ## Adding gene count separately 306 | system("plink --noweb --cfile burden_loop/size_loop --cnv-make-map --out burden_loop/size_loop") 307 | 308 | system(paste("plink --noweb --cfile burden_loop/size_loop --cnv-indiv-perm --mperm ",perm," --cnv-count ",gene_file," --out burden_loop/burden_loop",sep="")) 309 | 310 | } ## END of 2-10 count levels 311 | 312 | 313 | 314 | 315 | ## PART 3.3: Checking CNV burden coverage 316 | 317 | ## Check if any segments were matched 318 | cnv <- read.table('burden_loop/size_loop.cnv',h=T) 319 | 320 | if (nrow(cnv)==0){ 321 | 322 | plink_AFF_CNV[X] <- 0; plink_AFF_RATE[X] <- 0; plink_AFF_PROP[X] <- 0; plink_AFF_TOTKB[X] <- 0; plink_AFF_AVGKB[X] <- 0; plink_AFF_GRATE[X] <- 0 ; plink_AFF_GPROP[X] <- 0; plink_AFF_GRICH[X] <- 0 323 | plink_UNAFF_CNV[X] <- 0; plink_UNAFF_RATE[X] <- 0; plink_UNAFF_PROP[X] <- 0; plink_UNAFF_TOTKB[X] <- 0; plink_UNAFF_AVGKB[X] <- 0; plink_UNAFF_GRATE[X] <- 0 ; plink_UNAFF_GPROP[X] <- 0; plink_UNAFF_GRICH[X] <- 0 324 | plink_CASCON_CNV[X] <- NA; plink_CASCON_RATE[X] <- NA; plink_CASCON_PROP[X] <- NA; plink_CASCON_TOTKB[X] <- NA; plink_CASCON_AVGKB[X] <- NA; plink_CASCON_GRATE[X] <- NA ; plink_CASCON_GPROP[X] <- NA; plink_CASCON_GRICH[X] <- NA 325 | plink_CASCON_RATE_EMP1[X] <- NA; plink_CASCON_PROP_EMP1[X] <- NA; plink_CASCON_TOTKB_EMP1[X] <- NA; plink_CASCON_AVGKB_EMP1[X] <- NA; plink_CASCON_GRATE_EMP1[X] <- NA ; plink_CASCON_GPROP_EMP1[X] <- NA; plink_CASCON_GRICH_EMP1[X] <- NA 326 | 327 | FULL_SAMPLE_SIZE[X] <- nrow(cnv); CNV_CARRIER_SAMPLE_SIZE[X] <- 0; CNV_GENIC_CARRIER_SAMPLE_SIZE[X] <- 0; CNV_NONGENIC_CARRIER_SAMPLE_SIZE[X] <- 0 328 | NSEG[X] <- 0; NSEG_GENIC[X] <- 0; NSEG_NONGENIC[X] <- 0 329 | 330 | NSEG_rate[X] <- 0; NSEG_cas_rate[X] <- 0; NSEG_con_rate[X] <- 0; NSEG_cascon_ratio[X] <- NA; NSEG_glm_OR[X] <- NA; NSEG_glm_se[X] <- NA; NSEG_glm_tval[X] <- NA; NSEG_glm_pval[X] <- NA; NSEG_glm_lowerCI[X] <- NA; NSEG_glm_upperCI[X] <- NA 331 | KB_rate[X] <- 0; KB_cas_rate[X] <- 0; KB_con_rate[X] <- 0; KB_cascon_ratio[X] <- NA; KB_glm_OR[X] <- NA; KB_glm_se[X] <- NA; KB_glm_tval[X] <- NA; KB_glm_pval[X] <- NA; KB_glm_lowerCI[X] <- NA; KB_glm_upperCI[X] <- NA 332 | COUNT_rate[X] <- 0; COUNT_cas_rate[X] <- 0; COUNT_con_rate[X] <- 0; COUNT_cascon_ratio[X] <- NA; COUNT_glm_OR[X] <- NA; COUNT_glm_se[X] <- NA; COUNT_glm_tval[X] <- NA; COUNT_glm_pval[X] <- NA; COUNT_glm_lowerCI[X] <- NA; COUNT_glm_upperCI[X] <- NA 333 | NGENE_rate[X] <- 0; NGENE_cas_rate[X] <- 0; NGENE_con_rate[X] <- 0; NGENE_cascon_ratio[X] <- NA; NGENE_glm_OR[X] <- NA; NGENE_glm_se[X] <- NA; NGENE_glm_tval[X] <- NA; NGENE_glm_pval[X] <- NA; NGENE_glm_lowerCI[X] <- NA; NGENE_glm_upperCI[X] <- NA 334 | 335 | ##GENIC 336 | NSEG_GENIC_rate[X] <- 0; NSEG_GENIC_cas_rate[X] <- 0; NSEG_GENIC_con_rate[X] <- 0; NSEG_GENIC_cascon_ratio[X] <- NA; NSEG_GENIC_glm_OR[X] <- NA; NSEG_GENIC_glm_se[X] <- NA; NSEG_GENIC_glm_tval[X] <- NA; NSEG_GENIC_glm_pval[X] <- NA; NSEG_GENIC_glm_lowerCI[X] <- NA; NSEG_GENIC_glm_upperCI[X] <- NA 337 | KB_GENIC_rate[X] <- 0; KB_GENIC_cas_rate[X] <- 0; KB_GENIC_con_rate[X] <- 0; KB_GENIC_cascon_ratio[X] <- NA; KB_GENIC_glm_OR[X] <- NA; KB_GENIC_glm_se[X] <- NA; KB_GENIC_glm_tval[X] <- NA; KB_GENIC_glm_pval[X] <- NA; KB_GENIC_glm_lowerCI[X] <- NA; KB_GENIC_glm_upperCI[X] <- NA 338 | 339 | ##NONGENIC 340 | NSEG_NONGENIC_rate[X] <- 0; NSEG_NONGENIC_cas_rate[X] <- 0; NSEG_NONGENIC_con_rate[X] <- 0; NSEG_NONGENIC_cascon_ratio[X] <- NA; NSEG_NONGENIC_glm_OR[X] <- NA; NSEG_NONGENIC_glm_se[X] <- NA; NSEG_NONGENIC_glm_tval[X] <- NA; NSEG_NONGENIC_glm_pval[X] <- NA; NSEG_NONGENIC_glm_lowerCI[X] <- NA; NSEG_NONGENIC_glm_upperCI[X] <- NA 341 | KB_NONGENIC_rate[X] <- 0; KB_NONGENIC_cas_rate[X] <- 0; KB_NONGENIC_con_rate[X] <- 0; KB_NONGENIC_cascon_ratio[X] <- NA; KB_NONGENIC_glm_OR[X] <- NA; KB_NONGENIC_glm_se[X] <- NA; KB_NONGENIC_glm_tval[X] <- NA; KB_NONGENIC_glm_pval[X] <- NA; KB_NONGENIC_glm_lowerCI[X] <- NA; KB_NONGENIC_glm_upperCI[X] <- NA 342 | 343 | } ## END of NO mapped segments 344 | 345 | 346 | 347 | ## PART 3.4: Reading PLINK burden results 348 | 349 | if (nrow(cnv) > 0) { 350 | 351 | ## == PLINK results 352 | plink_sum <- read.table("burden_loop/burden_loop.cnv.grp.summary",h=T) 353 | plink_emp <- read.table("burden_loop/burden_loop.cnv.summary.mperm",h=T) 354 | 355 | plink_AFF_CNV[X] <- plink_sum[1,3] 356 | plink_AFF_RATE[X] <- plink_sum[2,3] 357 | plink_AFF_PROP[X] <- plink_sum[3,3] 358 | plink_AFF_TOTKB[X] <- plink_sum[4,3] 359 | plink_AFF_AVGKB[X] <- plink_sum[5,3] 360 | plink_AFF_GRATE[X] <- plink_sum[6,3] 361 | plink_AFF_GPROP[X] <- plink_sum[7,3] 362 | plink_AFF_GRICH[X] <- plink_sum[8,3] 363 | 364 | plink_UNAFF_CNV[X] <- plink_sum[1,4] 365 | plink_UNAFF_RATE[X] <- plink_sum[2,4] 366 | plink_UNAFF_PROP[X] <- plink_sum[3,4] 367 | plink_UNAFF_TOTKB[X] <- plink_sum[4,4] 368 | plink_UNAFF_AVGKB[X] <- plink_sum[5,4] 369 | plink_UNAFF_GRATE[X] <- plink_sum[6,4] 370 | plink_UNAFF_GPROP[X] <- plink_sum[7,4] 371 | plink_UNAFF_GRICH[X] <- plink_sum[8,4] 372 | 373 | plink_CASCON_CNV[X] <- plink_sum[1,3]/plink_sum[1,4] 374 | plink_CASCON_RATE[X] <- plink_sum[2,3]/plink_sum[2,4] 375 | plink_CASCON_PROP[X] <- plink_sum[3,3]/plink_sum[3,4] 376 | plink_CASCON_TOTKB[X] <- plink_sum[4,3]/plink_sum[4,4] 377 | plink_CASCON_AVGKB[X] <- plink_sum[5,3]/plink_sum[5,4] 378 | plink_CASCON_GRATE[X] <- plink_sum[6,3]/plink_sum[6,4] 379 | plink_CASCON_GPROP[X] <- plink_sum[7,3]/plink_sum[7,4] 380 | plink_CASCON_GRICH[X] <- plink_sum[8,3]/plink_sum[8,4] 381 | 382 | plink_CASCON_RATE_EMP1[X] <- plink_emp[1,3] 383 | plink_CASCON_PROP_EMP1[X] <- plink_emp[2,3] 384 | plink_CASCON_TOTKB_EMP1[X] <- plink_emp[3,3] 385 | plink_CASCON_AVGKB_EMP1[X] <- plink_emp[4,3] 386 | plink_CASCON_GRATE_EMP1[X] <- plink_emp[5,3] 387 | plink_CASCON_GPROP_EMP1[X] <- plink_emp[6,3] 388 | plink_CASCON_GRICH_EMP1[X] <- plink_emp[7,3] 389 | 390 | 391 | ## PART 3.5: CNV burden analysis in R 392 | 393 | indiv <- read.table("burden_loop/burden_loop.cnv.indiv",h=T) 394 | indiv$matchID <- paste(indiv$FID,':',indiv$IID,sep='') 395 | 396 | cnv <- read.table("burden_loop/size_loop.cnv",h=T) 397 | cnv$matchID <- paste(cnv$FID,':',cnv$IID,sep='') 398 | cnv$bp <- cnv$BP2 - cnv$BP1 399 | 400 | ## split into genic and non-genic CNVs 401 | genic <- subset(cnv,cnv$SCORE > 0) 402 | nongenic <- subset(cnv,cnv$SCORE == 0) 403 | 404 | # -- sum genes for each individual 405 | gene.cnt <- tapply(cnv$SCORE,factor(cnv$matchID),sum) 406 | indiv$NGENE <- 0 407 | # Apply changes only to indexed subset 408 | indx <- match(names(gene.cnt),indiv$matchID) 409 | indiv$NGENE <- replace(indiv$NGENE,indx,gene.cnt) 410 | 411 | ## -- sum genic CNV count and KB for each individual 412 | genic.tbl <- table(genic$matchID) 413 | indiv$GENIC_CNV_COUNT <- 0 414 | indx <- match(names(genic.tbl),indiv$matchID) 415 | indiv$GENIC_CNV_COUNT <- replace(indiv$GENIC_CNV_COUNT,indx,genic.tbl) 416 | 417 | genic.tbl <- tapply(genic$bp,genic$matchID,sum)/1000 418 | indiv$GENIC_KB <- 0 419 | indx <- match(names(genic.tbl),indiv$matchID) 420 | indiv$GENIC_KB <- replace(indiv$GENIC_KB,indx,genic.tbl) 421 | 422 | 423 | ## -- sum non-genic CNV count and KB for each individual 424 | nongenic.tbl <- table(nongenic$matchID) 425 | indiv$NONGENIC_CNV_COUNT <- 0 426 | indx <- match(names(nongenic.tbl),indiv$matchID) 427 | indiv$NONGENIC_CNV_COUNT <- replace(indiv$NONGENIC_CNV_COUNT,indx,nongenic.tbl) 428 | 429 | nongenic.tbl <- tapply(nongenic$bp,nongenic$matchID,sum)/1000 430 | indiv$NONGENIC_KB <- 0 431 | indx <- match(names(nongenic.tbl),indiv$matchID) 432 | indiv$NONGENIC_KB <- replace(indiv$NONGENIC_KB,indx,nongenic.tbl) 433 | 434 | ## -- merge with phenotype 435 | comrg <- merge(indiv,phe,by='matchID',all.x=T) 436 | comrg_cnv <- comrg[comrg$NSEG > 0,] 437 | comrg_genic <- comrg[comrg$GENIC_CNV_COUNT > 0,] 438 | comrg_nongenic <- comrg[comrg$NONGENIC_CNV_COUNT > 0,] 439 | 440 | 441 | 442 | ## ==== get SAMPLE_SIZES 443 | FULL_SAMPLE_SIZE[X] <- nrow(comrg) 444 | 445 | CNV_CARRIER_SAMPLE_SIZE[X] <- nrow(comrg_cnv) 446 | CNV_GENIC_CARRIER_SAMPLE_SIZE[X] <- nrow(comrg_genic) 447 | CNV_NONGENIC_CARRIER_SAMPLE_SIZE[X] <- nrow(comrg_nongenic) 448 | 449 | NSEG[X] <- sum(comrg$NSEG) 450 | NSEG_GENIC[X] <- sum(comrg$GENIC_CNV_COUNT) 451 | NSEG_NONGENIC[X] <- sum(comrg$NONGENIC_CNV_COUNT) 452 | 453 | 454 | ## ==== CNV Count 455 | NSEG_rate[X] <- mean(comrg$NSEG) 456 | NSEG_cas_rate[X] <- mean(comrg$NSEG[comrg$PHE==2]) 457 | NSEG_con_rate[X] <- mean(comrg$NSEG[comrg$PHE==1]) 458 | NSEG_cascon_ratio[X] <- NSEG_cas_rate[X]/NSEG_con_rate[X] 459 | 460 | if (data_set[X]=='PGC') { NSEG.lm <- glm(aff ~ NSEG + SEX + CNV_platform + C1 + C2 + C3 + C4 + C8,data=comrg,family='binomial') } 461 | if (data_set[X]!='PGC') { NSEG.lm <- glm(aff ~ NSEG + SEX + C1 + C2 + C3 + C4 + C8,data=comrg,family='binomial') } 462 | 463 | NSEG.mod <- summary(NSEG.lm) 464 | if(nrow(NSEG.mod$coefficients)==1){ 465 | NSEG_glm_OR[X] <- NA 466 | NSEG_glm_se[X] <- NA 467 | NSEG_glm_tval[X] <- NA 468 | NSEG_glm_pval[X] <- NA 469 | NSEG_glm_lowerCI[X] <- NA 470 | NSEG_glm_upperCI[X] <- NA } 471 | if(nrow(NSEG.mod$coefficients) > 1){ 472 | NSEG_glm_OR[X] <- exp(NSEG.mod$coefficients[2,1]*NSEG_rate[X]) 473 | NSEG_glm_se[X] <- NSEG.mod$coefficients[2,2]*NSEG_rate[X] 474 | NSEG_glm_tval[X] <- NSEG.mod$coefficients[2,3] 475 | NSEG_glm_pval[X] <- NSEG.mod$coefficients[2,4] 476 | NSEG_glm_lowerCI[X] <- NSEG_glm_OR[X] - (1.96*NSEG_glm_se[X]) 477 | NSEG_glm_upperCI[X] <- NSEG_glm_OR[X] + (1.96*NSEG_glm_se[X]) } 478 | 479 | 480 | ## ==== overall KB burden 481 | KB_rate[X] <- mean(comrg_cnv$KB) 482 | KB_cas_rate[X] <- mean(comrg_cnv$KB[comrg_cnv$PHE==2]) 483 | KB_con_rate[X] <- mean(comrg_cnv$KB[comrg_cnv$PHE==1]) 484 | KB_cascon_ratio[X] <- KB_cas_rate[X]/KB_con_rate[X] 485 | 486 | if(sum(comrg_cnv$aff==1)==0 | sum(comrg_cnv$aff==1)==0){ 487 | KB_glm_OR[X] <- NA 488 | KB_glm_se[X] <- NA 489 | KB_glm_tval[X] <- NA 490 | KB_glm_pval[X] <- NA 491 | KB_glm_lowerCI[X] <- NA 492 | KB_glm_upperCI[X] <- NA } 493 | 494 | if(sum(comrg_cnv$aff==1) > 0 & sum(comrg_cnv$aff==1) > 0){ 495 | 496 | if (data_set[X]=='PGC') { KB.lm <- glm(aff ~ KB + SEX + CNV_platform + C1 + C2 + C3 + C4 + C8,data=comrg_cnv,family='binomial') } 497 | if (data_set[X]!='PGC') { KB.lm <- glm(aff ~ KB + SEX + C1 + C2 + C3 + C4 + C8,data=comrg_cnv,family='binomial') } 498 | 499 | KB.mod <- summary(KB.lm) 500 | KB_glm_OR[X] <- exp(KB.mod$coefficients[2,1]*KB_rate[X]) 501 | KB_glm_se[X] <- KB.mod$coefficients[2,2]*KB_rate[X] 502 | KB_glm_tval[X] <- KB.mod$coefficients[2,3] 503 | KB_glm_pval[X] <- KB.mod$coefficients[2,4] 504 | KB_glm_lowerCI[X] <- KB_glm_OR[X] - (1.96*KB_glm_se[X]) 505 | KB_glm_upperCI[X] <- KB_glm_OR[X] + (1.96*KB_glm_se[X]) } 506 | 507 | 508 | 509 | ## ==== avg. COUNT per CNV (sanity check on NGENE) 510 | COUNT_rate[X] <- mean(comrg_cnv$COUNT) 511 | COUNT_cas_rate[X] <- mean(comrg_cnv$COUNT[comrg_cnv$PHE==2]) 512 | COUNT_con_rate[X] <- mean(comrg_cnv$COUNT[comrg_cnv$PHE==1]) 513 | COUNT_cascon_ratio[X] <- COUNT_cas_rate[X]/COUNT_con_rate[X] 514 | 515 | if(sum(comrg_cnv$aff==1)==0 | sum(comrg_cnv$aff==1)==0){ 516 | COUNT_glm_OR[X] <- NA 517 | COUNT_glm_se[X] <- NA 518 | COUNT_glm_tval[X] <- NA 519 | COUNT_glm_pval[X] <- NA 520 | COUNT_glm_lowerCI[X] <- NA 521 | COUNT_glm_upperCI[X] <- NA } 522 | 523 | 524 | if(sum(comrg_cnv$aff==1) > 0 & sum(comrg_cnv$aff==1) > 0){ 525 | 526 | if (data_set[X]=='PGC') { COUNT.lm <- glm(aff ~ COUNT + SEX + CNV_platform + C1 + C2 + C3 + C4 + C8,data=comrg_cnv,family='binomial') } 527 | if (data_set[X]!='PGC') { COUNT.lm <- glm(aff ~ COUNT + SEX + C1 + C2 + C3 + C4 + C8,data=comrg_cnv,family='binomial') } 528 | 529 | COUNT.mod <- summary(COUNT.lm) 530 | COUNT_glm_OR[X] <- exp(COUNT.mod$coefficients[2,1]*COUNT_rate[X]) 531 | COUNT_glm_se[X] <- COUNT.mod$coefficients[2,2]*COUNT_rate[X] 532 | COUNT_glm_tval[X] <- COUNT.mod$coefficients[2,3] 533 | COUNT_glm_pval[X] <- COUNT.mod$coefficients[2,4] 534 | COUNT_glm_lowerCI[X] <- COUNT_glm_OR[X] - (1.96*COUNT_glm_se[X]) 535 | COUNT_glm_upperCI[X] <- COUNT_glm_OR[X] + (1.96*COUNT_glm_se[X]) } 536 | 537 | 538 | ## ==== Genes covered 539 | NGENE_rate[X] <- mean(comrg_cnv$NGENE) 540 | NGENE_cas_rate[X] <- mean(comrg_cnv$NGENE[comrg_cnv$PHE==2]) 541 | NGENE_con_rate[X] <- mean(comrg_cnv$NGENE[comrg_cnv$PHE==1]) 542 | NGENE_cascon_ratio[X] <- NGENE_cas_rate[X]/NGENE_con_rate[X] 543 | 544 | if(sum(comrg_cnv$aff==1)==0 | sum(comrg_cnv$aff==1)==0){ 545 | NGENE_glm_OR[X] <- NA 546 | NGENE_glm_se[X] <- NA 547 | NGENE_glm_tval[X] <- NA 548 | NGENE_glm_pval[X] <- NA 549 | NGENE_glm_lowerCI[X] <- NA 550 | NGENE_glm_upperCI[X] <- NA } 551 | 552 | if(sum(comrg_cnv$aff==1) > 0 & sum(comrg_cnv$aff==1) > 0){ 553 | 554 | if (data_set[X]=='PGC') { NGENE.lm <- glm(aff ~ NGENE + SEX + CNV_platform + C1 + C2 + C3 + C4 + C8,data=comrg_cnv,family='binomial') } 555 | if (data_set[X]!='PGC') { NGENE.lm <- glm(aff ~ NGENE + SEX + C1 + C2 + C3 + C4 + C8,data=comrg_cnv,family='binomial') } 556 | 557 | NGENE.mod <- summary(NGENE.lm) 558 | NGENE_glm_OR[X] <- exp(NGENE.mod$coefficients[2,1]*NGENE_rate[X]) 559 | NGENE_glm_se[X] <- NGENE.mod$coefficients[2,2]*NGENE_rate[X] 560 | NGENE_glm_tval[X] <- NGENE.mod$coefficients[2,3] 561 | NGENE_glm_pval[X] <- NGENE.mod$coefficients[2,4] 562 | NGENE_glm_lowerCI[X] <- NGENE_glm_OR[X] - (1.96*NGENE_glm_se[X]) 563 | NGENE_glm_upperCI[X] <- NGENE_glm_OR[X] + (1.96*NGENE_glm_se[X]) } 564 | 565 | 566 | ## ==== GENIC CNV Count 567 | NSEG_GENIC_rate[X] <- mean(comrg$GENIC_CNV_COUNT) 568 | NSEG_GENIC_cas_rate[X] <- mean(comrg$GENIC_CNV_COUNT[comrg$PHE==2]) 569 | NSEG_GENIC_con_rate[X] <- mean(comrg$GENIC_CNV_COUNT[comrg$PHE==1]) 570 | NSEG_GENIC_cascon_ratio[X] <- NSEG_GENIC_cas_rate[X]/NSEG_GENIC_con_rate[X] 571 | 572 | if (data_set[X]=='PGC') { NSEG_GENIC.lm <- glm(aff ~ GENIC_CNV_COUNT + SEX + CNV_platform + C1 + C2 + C3 + C4 + C8,data=comrg,family='binomial') } 573 | if (data_set[X]!='PGC') { NSEG_GENIC.lm <- glm(aff ~ GENIC_CNV_COUNT + SEX + C1 + C2 + C3 + C4 + C8,data=comrg,family='binomial') } 574 | 575 | NSEG_GENIC.mod <- summary(NSEG_GENIC.lm) 576 | if(nrow(NSEG_GENIC.mod$coefficients)==1){ 577 | NSEG_GENIC_glm_OR[X] <- NA 578 | NSEG_GENIC_glm_se[X] <- NA 579 | NSEG_GENIC_glm_tval[X] <- NA 580 | NSEG_GENIC_glm_pval[X] <- NA 581 | NSEG_GENIC_glm_lowerCI[X] <- NA 582 | NSEG_GENIC_glm_upperCI[X] <- NA } 583 | if(nrow(NSEG_GENIC.mod$coefficients) > 1){ 584 | NSEG_GENIC_glm_OR[X] <- exp(NSEG_GENIC.mod$coefficients[2,1]*NSEG_GENIC_rate[X]) 585 | NSEG_GENIC_glm_se[X] <- NSEG_GENIC.mod$coefficients[2,2]*NSEG_GENIC_rate[X] 586 | NSEG_GENIC_glm_tval[X] <- NSEG_GENIC.mod$coefficients[2,3] 587 | NSEG_GENIC_glm_pval[X] <- NSEG_GENIC.mod$coefficients[2,4] 588 | NSEG_GENIC_glm_lowerCI[X] <- NSEG_GENIC_glm_OR[X] - 1.96*NSEG_GENIC_glm_se[X] 589 | NSEG_GENIC_glm_upperCI[X] <- NSEG_GENIC_glm_OR[X] + 1.96*NSEG_GENIC_glm_se[X] } 590 | 591 | 592 | ## ==== GENIC KB burden 593 | KB_GENIC_rate[X] <- mean(comrg_genic$GENIC_KB) 594 | KB_GENIC_cas_rate[X] <- mean(comrg_genic$GENIC_KB[comrg_genic$PHE==2]) 595 | KB_GENIC_con_rate[X] <- mean(comrg_genic$GENIC_KB[comrg_genic$PHE==1]) 596 | KB_GENIC_cascon_ratio[X] <- KB_GENIC_cas_rate[X]/KB_GENIC_con_rate[X] 597 | 598 | if(sum(comrg_genic$aff==1)==0 | sum(comrg_genic$aff==1)==0){ 599 | KB_GENIC_glm_OR[X] <- NA 600 | KB_GENIC_glm_se[X] <- NA 601 | KB_GENIC_glm_tval[X] <- NA 602 | KB_GENIC_glm_pval[X] <- NA 603 | KB_GENIC_glm_lowerCI[X] <- NA 604 | KB_GENIC_glm_upperCI[X] <- NA } 605 | 606 | if(sum(comrg_genic$aff==1) > 0 & sum(comrg_genic$aff==1) > 0){ 607 | 608 | if (data_set[X]=='PGC') { KB_GENIC.lm <- glm(aff ~ GENIC_KB + SEX + CNV_platform + C1 + C2 + C3 + C4 + C8,data=comrg_genic,family='binomial') } 609 | if (data_set[X]!='PGC') { KB_GENIC.lm <- glm(aff ~ GENIC_KB + SEX + C1 + C2 + C3 + C4 + C8,data=comrg_genic,family='binomial') } 610 | 611 | KB_GENIC.mod <- summary(KB_GENIC.lm) 612 | KB_GENIC_glm_OR[X] <- exp(KB_GENIC.mod$coefficients[2,1]*KB_GENIC_rate[X]) 613 | KB_GENIC_glm_se[X] <- KB_GENIC.mod$coefficients[2,2]*KB_GENIC_rate[X] 614 | KB_GENIC_glm_tval[X] <- KB_GENIC.mod$coefficients[2,3] 615 | KB_GENIC_glm_pval[X] <- KB_GENIC.mod$coefficients[2,4] 616 | KB_GENIC_glm_lowerCI[X] <- exp(KB_GENIC_glm_OR[X] - 1.96*KB_GENIC_glm_se[X]) 617 | KB_GENIC_glm_upperCI[X] <- exp(KB_GENIC_glm_OR[X] + 1.96*KB_GENIC_glm_se[X]) } 618 | 619 | 620 | ## ==== NONGENIC CNV Count 621 | NSEG_NONGENIC_rate[X] <- mean(comrg$NONGENIC_CNV_COUNT) 622 | NSEG_NONGENIC_cas_rate[X] <- mean(comrg$NONGENIC_CNV_COUNT[comrg_nongenic$PHE==2]) 623 | NSEG_NONGENIC_con_rate[X] <- mean(comrg$NONGENIC_CNV_COUNT[comrg_nongenic$PHE==1]) 624 | NSEG_NONGENIC_cascon_ratio[X] <- NSEG_NONGENIC_cas_rate[X]/NSEG_NONGENIC_con_rate[X] 625 | 626 | if(sum(comrg$aff==1)==0 | sum(comrg$aff==1)==0){ 627 | NSEG_NONGENIC_glm_OR[X] <- NA 628 | NSEG_NONGENIC_glm_se[X] <- NA 629 | NSEG_NONGENIC_glm_tval[X] <- NA 630 | NSEG_NONGENIC_glm_pval[X] <- NA 631 | NSEG_NONGENIC_glm_lowerCI[X] <- NA 632 | NSEG_NONGENIC_glm_upperCI[X] <- NA } 633 | 634 | if(sum(comrg$aff==1) > 0 & sum(comrg$aff==1) > 0){ 635 | 636 | if (data_set[X]=='PGC') { NSEG_NONGENIC.lm <- glm(aff ~ NONGENIC_CNV_COUNT + SEX + CNV_platform + C1 + C2 + C3 + C4 + C8,data=comrg,family='binomial') } 637 | if (data_set[X]!='PGC') { NSEG_NONGENIC.lm <- glm(aff ~ NONGENIC_CNV_COUNT + SEX + C1 + C2 + C3 + C4 + C8,data=comrg,family='binomial') } 638 | 639 | NSEG_NONGENIC.mod <- summary(NSEG_NONGENIC.lm) 640 | NSEG_NONGENIC_glm_OR[X] <- exp(NSEG_NONGENIC.mod$coefficients[2,1]*NSEG_NONGENIC_rate[X]) 641 | NSEG_NONGENIC_glm_se[X] <- NSEG_NONGENIC.mod$coefficients[2,2]*NSEG_NONGENIC_rate[X] 642 | NSEG_NONGENIC_glm_tval[X] <- NSEG_NONGENIC.mod$coefficients[2,3] 643 | NSEG_NONGENIC_glm_pval[X] <- NSEG_NONGENIC.mod$coefficients[2,4] 644 | NSEG_NONGENIC_glm_lowerCI[X] <- NSEG_NONGENIC_glm_OR[X] - 1.96*NSEG_NONGENIC_glm_se[X] 645 | NSEG_NONGENIC_glm_upperCI[X] <- NSEG_NONGENIC_glm_OR[X] + 1.96*NSEG_NONGENIC_glm_se[X] } 646 | 647 | 648 | ## ==== NONGENIC KB burden 649 | KB_NONGENIC_rate[X] <- mean(comrg_nongenic$NONGENIC_KB) 650 | KB_NONGENIC_cas_rate[X] <- mean(comrg_nongenic$NONGENIC_KB[comrg_nongenic$PHE==2]) 651 | KB_NONGENIC_con_rate[X] <- mean(comrg_nongenic$NONGENIC_KB[comrg_nongenic$PHE==1]) 652 | KB_NONGENIC_cascon_ratio[X] <- KB_NONGENIC_cas_rate[X]/KB_NONGENIC_con_rate[X] 653 | 654 | if(sum(comrg_nongenic$aff==1)==0 | sum(comrg_genic$aff==1)==0){ 655 | KB_NONGENIC_glm_OR[X] <- NA 656 | KB_NONGENIC_glm_se[X] <- NA 657 | KB_NONGENIC_glm_tval[X] <- NA 658 | KB_NONGENIC_glm_pval[X] <- NA 659 | KB_NONGENIC_glm_lowerCI[X] <- NA 660 | KB_NONGENIC_glm_upperCI[X] <- NA } 661 | 662 | 663 | if(sum(comrg_nongenic$aff==1) > 0 & sum(comrg_nongenic$aff==1) > 0){ 664 | 665 | if (data_set[X]=='PGC') { KB_NONGENIC.lm <- glm(aff ~ NONGENIC_KB + SEX + CNV_platform + C1 + C2 + C3 + C4 + C8,data=comrg_nongenic,family='binomial') } 666 | if (data_set[X]!='PGC') { KB_NONGENIC.lm <- glm(aff ~ NONGENIC_KB + SEX + C1 + C2 + C3 + C4 + C8,data=comrg_nongenic,family='binomial') } 667 | 668 | KB_NONGENIC.mod <- summary(KB_NONGENIC.lm) 669 | KB_NONGENIC_glm_OR[X] <- exp(KB_NONGENIC.mod$coefficients[2,1]*KB_NONGENIC_rate[X]) 670 | KB_NONGENIC_glm_se[X] <- KB_NONGENIC.mod$coefficients[2,2]*KB_NONGENIC_rate[X] 671 | KB_NONGENIC_glm_tval[X] <- KB_NONGENIC.mod$coefficients[2,3] 672 | KB_NONGENIC_glm_pval[X] <- KB_NONGENIC.mod$coefficients[2,4] 673 | KB_NONGENIC_glm_lowerCI[X] <- exp(KB_NONGENIC_glm_OR[X] - 1.96*KB_NONGENIC_glm_se[X]) 674 | KB_NONGENIC_glm_upperCI[X] <- exp(KB_NONGENIC_glm_OR[X] + 1.96*KB_NONGENIC_glm_se[X]) } 675 | 676 | 677 | } ## End of mapped segments analysis 678 | 679 | 680 | 681 | } ## e LOOP 682 | } ## d LOOP 683 | } ## c LOOP 684 | } ## b LOOP 685 | } ## a LOOP 686 | ## ================= END of LOOPs 687 | 688 | 689 | ## PART 3.6: Combining all results together and writing to file 690 | 691 | full_data <- cbind.data.frame(data_set, 692 | region_set, 693 | CNV_type, 694 | CNV_freq, 695 | CNV_size, 696 | plink_AFF_CNV, 697 | plink_AFF_RATE, 698 | plink_AFF_PROP, 699 | plink_AFF_TOTKB, 700 | plink_AFF_AVGKB, 701 | plink_AFF_GRATE, 702 | plink_AFF_GPROP, 703 | plink_AFF_GRICH, 704 | plink_UNAFF_CNV, 705 | plink_UNAFF_RATE, 706 | plink_UNAFF_PROP, 707 | plink_UNAFF_TOTKB, 708 | plink_UNAFF_AVGKB, 709 | plink_UNAFF_GRATE, 710 | plink_UNAFF_GPROP, 711 | plink_UNAFF_GRICH, 712 | plink_CASCON_CNV, 713 | plink_CASCON_RATE, 714 | plink_CASCON_PROP, 715 | plink_CASCON_TOTKB, 716 | plink_CASCON_AVGKB, 717 | plink_CASCON_GRATE, 718 | plink_CASCON_GPROP, 719 | plink_CASCON_GRICH, 720 | plink_CASCON_RATE_EMP1, 721 | plink_CASCON_PROP_EMP1, 722 | plink_CASCON_TOTKB_EMP1, 723 | plink_CASCON_AVGKB_EMP1, 724 | plink_CASCON_GRATE_EMP1, 725 | plink_CASCON_GPROP_EMP1, 726 | plink_CASCON_GRICH_EMP1, 727 | FULL_SAMPLE_SIZE, 728 | CNV_CARRIER_SAMPLE_SIZE, 729 | CNV_GENIC_CARRIER_SAMPLE_SIZE, 730 | CNV_NONGENIC_CARRIER_SAMPLE_SIZE, 731 | NSEG, 732 | NSEG_GENIC, 733 | NSEG_NONGENIC, 734 | NSEG_rate, 735 | NSEG_cas_rate, 736 | NSEG_con_rate, 737 | NSEG_cascon_ratio, 738 | NSEG_glm_OR, 739 | NSEG_glm_se, 740 | NSEG_glm_tval, 741 | NSEG_glm_pval, 742 | NSEG_glm_lowerCI, 743 | NSEG_glm_upperCI, 744 | KB_rate, 745 | KB_cas_rate, 746 | KB_con_rate, 747 | KB_cascon_ratio, 748 | KB_glm_OR, 749 | KB_glm_se, 750 | KB_glm_tval, 751 | KB_glm_pval, 752 | KB_glm_lowerCI, 753 | KB_glm_upperCI, 754 | COUNT_rate, 755 | COUNT_cas_rate, 756 | COUNT_con_rate, 757 | COUNT_cascon_ratio, 758 | COUNT_glm_OR, 759 | COUNT_glm_se, 760 | COUNT_glm_tval, 761 | COUNT_glm_pval, 762 | COUNT_glm_lowerCI, 763 | COUNT_glm_upperCI, 764 | NGENE_rate, 765 | NGENE_cas_rate, 766 | NGENE_con_rate, 767 | NGENE_cascon_ratio, 768 | NGENE_glm_OR, 769 | NGENE_glm_se, 770 | NGENE_glm_tval, 771 | NGENE_glm_pval, 772 | NGENE_glm_lowerCI, 773 | NGENE_glm_upperCI, 774 | NSEG_GENIC_rate, 775 | NSEG_GENIC_cas_rate, 776 | NSEG_GENIC_con_rate, 777 | NSEG_GENIC_cascon_ratio, 778 | NSEG_GENIC_glm_OR, 779 | NSEG_GENIC_glm_se, 780 | NSEG_GENIC_glm_tval, 781 | NSEG_GENIC_glm_pval, 782 | NSEG_GENIC_glm_lowerCI, 783 | NSEG_GENIC_glm_upperCI, 784 | KB_GENIC_rate, 785 | KB_GENIC_cas_rate, 786 | KB_GENIC_con_rate, 787 | KB_GENIC_cascon_ratio, 788 | KB_GENIC_glm_OR, 789 | KB_GENIC_glm_se, 790 | KB_GENIC_glm_tval, 791 | KB_GENIC_glm_pval, 792 | KB_GENIC_glm_lowerCI, 793 | KB_GENIC_glm_upperCI, 794 | NSEG_NONGENIC_rate, 795 | NSEG_NONGENIC_cas_rate, 796 | NSEG_NONGENIC_con_rate, 797 | NSEG_NONGENIC_cascon_ratio, 798 | NSEG_NONGENIC_glm_OR, 799 | NSEG_NONGENIC_glm_se, 800 | NSEG_NONGENIC_glm_tval, 801 | NSEG_NONGENIC_glm_pval, 802 | NSEG_NONGENIC_glm_lowerCI, 803 | NSEG_NONGENIC_glm_upperCI, 804 | KB_NONGENIC_rate, 805 | KB_NONGENIC_cas_rate, 806 | KB_NONGENIC_con_rate, 807 | KB_NONGENIC_cascon_ratio, 808 | KB_NONGENIC_glm_OR, 809 | KB_NONGENIC_glm_se, 810 | KB_NONGENIC_glm_tval, 811 | KB_NONGENIC_glm_pval, 812 | KB_NONGENIC_glm_lowerCI, 813 | KB_NONGENIC_glm_upperCI) 814 | 815 | ## write to file 816 | write.table(full_data,paste(sep='',wdir,'/',output,'.burden'),col=T,row=F,quo=F,sep='\t') 817 | 818 | 819 | -------------------------------------------------------------------------------- /CNV_data.fam: -------------------------------------------------------------------------------- 1 | data1_1201 data1_1 0 0 2 2 2 | data1_1202 data1_2 0 0 1 2 3 | data1_1203 data1_3 0 0 2 2 4 | data1_1204 data1_4 0 0 1 2 5 | data1_1205 data1_5 0 0 2 2 6 | data1_1206 data1_6 0 0 2 2 7 | data1_1207 data1_7 0 0 1 2 8 | data1_1208 data1_8 0 0 2 2 9 | data1_1209 data1_9 0 0 2 2 10 | data1_1210 data1_10 0 0 2 2 11 | data1_1211 data1_11 0 0 2 2 12 | data1_1212 data1_12 0 0 1 2 13 | data1_1213 data1_13 0 0 1 2 14 | data1_1214 data1_14 0 0 1 2 15 | data1_1215 data1_15 0 0 2 2 16 | data1_1216 data1_16 0 0 1 2 17 | data1_1217 data1_17 0 0 1 2 18 | data1_1218 data1_18 0 0 1 2 19 | data1_1219 data1_19 0 0 2 2 20 | data1_1220 data1_20 0 0 1 2 21 | data1_1221 data1_21 0 0 1 2 22 | data1_1222 data1_22 0 0 2 2 23 | data1_1223 data1_23 0 0 2 2 24 | data1_1224 data1_24 0 0 2 2 25 | data1_1225 data1_25 0 0 2 2 26 | data1_1226 data1_26 0 0 1 2 27 | data1_1227 data1_27 0 0 2 2 28 | data1_1228 data1_28 0 0 2 2 29 | data1_1229 data1_29 0 0 2 2 30 | data1_1230 data1_30 0 0 2 2 31 | data1_1231 data1_31 0 0 1 2 32 | data1_1232 data1_32 0 0 1 2 33 | data1_1233 data1_33 0 0 2 2 34 | data1_1234 data1_34 0 0 2 2 35 | data1_1235 data1_35 0 0 1 2 36 | data1_1236 data1_36 0 0 1 2 37 | data1_1237 data1_37 0 0 2 2 38 | data1_1238 data1_38 0 0 2 2 39 | data1_1239 data1_39 0 0 2 2 40 | data1_1240 data1_40 0 0 1 2 41 | data1_1241 data1_41 0 0 2 2 42 | data1_1242 data1_42 0 0 2 2 43 | data1_1243 data1_43 0 0 1 2 44 | data1_1244 data1_44 0 0 1 2 45 | data1_1245 data1_45 0 0 2 2 46 | data1_1246 data1_46 0 0 2 2 47 | data1_1247 data1_47 0 0 1 2 48 | data1_1248 data1_48 0 0 2 2 49 | data1_1249 data1_49 0 0 1 2 50 | data1_1250 data1_50 0 0 1 2 51 | data1_1251 data1_51 0 0 2 2 52 | data1_1252 data1_52 0 0 1 2 53 | data1_1253 data1_53 0 0 2 2 54 | data1_1254 data1_54 0 0 2 2 55 | data1_1255 data1_55 0 0 2 2 56 | data1_1256 data1_56 0 0 1 2 57 | data1_1257 data1_57 0 0 1 2 58 | data1_1258 data1_58 0 0 1 2 59 | data1_1259 data1_59 0 0 1 2 60 | data1_1260 data1_60 0 0 2 2 61 | data1_1261 data1_61 0 0 2 2 62 | data1_1262 data1_62 0 0 2 2 63 | data1_1263 data1_63 0 0 2 2 64 | data1_1264 data1_64 0 0 1 2 65 | data1_1265 data1_65 0 0 1 2 66 | data1_1266 data1_66 0 0 2 2 67 | data1_1267 data1_67 0 0 2 2 68 | data1_1268 data1_68 0 0 1 2 69 | data1_1269 data1_69 0 0 2 2 70 | data1_1270 data1_70 0 0 2 2 71 | data1_1271 data1_71 0 0 1 2 72 | data1_1272 data1_72 0 0 1 2 73 | data1_1273 data1_73 0 0 2 2 74 | data1_1274 data1_74 0 0 1 2 75 | data1_1275 data1_75 0 0 1 2 76 | data1_1276 data1_76 0 0 1 2 77 | data1_1277 data1_77 0 0 1 2 78 | data1_1278 data1_78 0 0 2 2 79 | data1_1279 data1_79 0 0 2 2 80 | data1_1280 data1_80 0 0 2 2 81 | data1_1281 data1_81 0 0 2 2 82 | data1_1282 data1_82 0 0 1 2 83 | data1_1283 data1_83 0 0 2 2 84 | data1_1284 data1_84 0 0 1 2 85 | data1_1285 data1_85 0 0 2 2 86 | data1_1286 data1_86 0 0 1 2 87 | data1_1287 data1_87 0 0 1 2 88 | data1_1288 data1_88 0 0 2 2 89 | data1_1289 data1_89 0 0 1 2 90 | data1_1290 data1_90 0 0 1 2 91 | data1_1291 data1_91 0 0 1 2 92 | data1_1292 data1_92 0 0 1 2 93 | data1_1293 data1_93 0 0 2 2 94 | data1_1294 data1_94 0 0 1 2 95 | data1_1295 data1_95 0 0 1 2 96 | data1_1296 data1_96 0 0 2 2 97 | data1_1297 data1_97 0 0 2 2 98 | data1_1298 data1_98 0 0 2 2 99 | data1_1299 data1_99 0 0 1 2 100 | data1_1300 data1_100 0 0 2 2 101 | data2_1 data2_1 0 0 1 2 102 | data2_2 data2_2 0 0 1 2 103 | data2_3 data2_3 0 0 1 2 104 | data2_4 data2_4 0 0 1 2 105 | data2_5 data2_5 0 0 1 2 106 | data2_6 data2_6 0 0 1 2 107 | data2_7 data2_7 0 0 1 2 108 | data2_8 data2_8 0 0 1 2 109 | data2_9 data2_9 0 0 1 2 110 | data2_10 data2_10 0 0 1 2 111 | data2_11 data2_11 0 0 1 2 112 | data2_12 data2_12 0 0 1 2 113 | data2_13 data2_13 0 0 1 2 114 | data2_14 data2_14 0 0 2 2 115 | data2_15 data2_15 0 0 2 2 116 | data2_16 data2_16 0 0 1 2 117 | data2_17 data2_17 0 0 1 2 118 | data2_18 data2_18 0 0 2 2 119 | data2_19 data2_19 0 0 2 2 120 | data2_20 data2_20 0 0 1 2 121 | data2_21 data2_21 0 0 1 2 122 | data2_22 data2_22 0 0 1 2 123 | data2_23 data2_23 0 0 2 2 124 | data2_24 data2_24 0 0 1 2 125 | data2_25 data2_25 0 0 2 2 126 | data2_26 data2_26 0 0 1 2 127 | data2_27 data2_27 0 0 1 2 128 | data2_28 data2_28 0 0 1 2 129 | data2_29 data2_29 0 0 2 2 130 | data2_30 data2_30 0 0 1 2 131 | data2_31 data2_31 0 0 1 2 132 | data2_32 data2_32 0 0 1 2 133 | data2_33 data2_33 0 0 1 2 134 | data2_34 data2_34 0 0 1 2 135 | data2_35 data2_35 0 0 1 2 136 | data2_36 data2_36 0 0 1 2 137 | data2_37 data2_37 0 0 1 2 138 | data2_38 data2_38 0 0 1 2 139 | data2_39 data2_39 0 0 1 2 140 | data2_40 data2_40 0 0 1 2 141 | data2_41 data2_41 0 0 1 2 142 | data2_42 data2_42 0 0 1 2 143 | data2_43 data2_43 0 0 1 2 144 | data2_44 data2_44 0 0 1 2 145 | data2_45 data2_45 0 0 1 2 146 | data2_46 data2_46 0 0 1 2 147 | data2_47 data2_47 0 0 1 2 148 | data2_48 data2_48 0 0 1 2 149 | data2_49 data2_49 0 0 1 2 150 | data2_50 data2_50 0 0 2 2 151 | data2_51 data2_51 0 0 1 2 152 | data2_52 data2_52 0 0 1 2 153 | data2_53 data2_53 0 0 1 2 154 | data2_54 data2_54 0 0 1 2 155 | data2_55 data2_55 0 0 1 2 156 | data2_56 data2_56 0 0 1 2 157 | data2_57 data2_57 0 0 1 2 158 | data2_58 data2_58 0 0 1 2 159 | data2_59 data2_59 0 0 2 2 160 | data2_60 data2_60 0 0 1 2 161 | data2_61 data2_61 0 0 1 2 162 | data2_62 data2_62 0 0 2 2 163 | data2_63 data2_63 0 0 1 2 164 | data2_64 data2_64 0 0 2 2 165 | data2_65 data2_65 0 0 1 2 166 | data2_66 data2_66 0 0 1 2 167 | data2_67 data2_67 0 0 1 2 168 | data2_68 data2_68 0 0 2 2 169 | data2_69 data2_69 0 0 1 2 170 | data2_70 data2_70 0 0 1 2 171 | data2_71 data2_71 0 0 1 2 172 | data2_72 data2_72 0 0 1 2 173 | data2_73 data2_73 0 0 2 2 174 | data2_74 data2_74 0 0 1 2 175 | data2_75 data2_75 0 0 2 2 176 | data2_76 data2_76 0 0 1 2 177 | data2_77 data2_77 0 0 1 2 178 | data2_78 data2_78 0 0 2 2 179 | data2_79 data2_79 0 0 1 2 180 | data2_80 data2_80 0 0 2 2 181 | data2_81 data2_81 0 0 2 2 182 | data2_82 data2_82 0 0 2 2 183 | data2_83 data2_83 0 0 1 2 184 | data2_84 data2_84 0 0 1 2 185 | data2_85 data2_85 0 0 1 2 186 | data2_86 data2_86 0 0 1 2 187 | data2_87 data2_87 0 0 1 2 188 | data2_88 data2_88 0 0 2 2 189 | data2_89 data2_89 0 0 2 2 190 | data2_90 data2_90 0 0 2 2 191 | data2_91 data2_91 0 0 1 2 192 | data2_92 data2_92 0 0 2 2 193 | data2_93 data2_93 0 0 1 2 194 | data2_94 data2_94 0 0 1 2 195 | data2_95 data2_95 0 0 2 2 196 | data2_96 data2_96 0 0 1 2 197 | data2_97 data2_97 0 0 1 2 198 | data2_98 data2_98 0 0 1 2 199 | data2_99 data2_99 0 0 1 2 200 | data2_100 data2_100 0 0 2 2 201 | data2_101 data2_101 0 0 1 2 202 | data2_102 data2_102 0 0 1 2 203 | data2_103 data2_103 0 0 1 2 204 | data2_104 data2_104 0 0 2 2 205 | data2_105 data2_105 0 0 1 2 206 | data2_106 data2_106 0 0 1 2 207 | data2_107 data2_107 0 0 1 2 208 | data2_108 data2_108 0 0 1 2 209 | data2_109 data2_109 0 0 1 2 210 | data2_110 data2_110 0 0 1 2 211 | data2_111 data2_111 0 0 1 2 212 | data2_112 data2_112 0 0 1 2 213 | data2_113 data2_113 0 0 1 1 214 | data2_114 data2_114 0 0 2 1 215 | data2_115 data2_115 0 0 2 1 216 | data2_116 data2_116 0 0 1 2 217 | data2_117 data2_117 0 0 2 1 218 | data2_118 data2_118 0 0 1 1 219 | data2_119 data2_119 0 0 1 1 220 | data2_120 data2_120 0 0 1 1 221 | data2_121 data2_121 0 0 1 1 222 | data2_122 data2_122 0 0 2 1 223 | data2_123 data2_123 0 0 2 1 224 | data2_124 data2_124 0 0 1 1 225 | data2_125 data2_125 0 0 1 1 226 | data2_126 data2_126 0 0 1 2 227 | data2_127 data2_127 0 0 1 1 228 | data2_128 data2_128 0 0 1 1 229 | data2_129 data2_129 0 0 2 1 230 | data2_130 data2_130 0 0 1 2 231 | data2_131 data2_131 0 0 2 2 232 | data2_132 data2_132 0 0 1 1 233 | data2_133 data2_133 0 0 2 1 234 | data2_134 data2_134 0 0 1 2 235 | data2_135 data2_135 0 0 1 1 236 | data2_136 data2_136 0 0 1 1 237 | data2_137 data2_137 0 0 1 1 238 | data2_138 data2_138 0 0 1 1 239 | data2_139 data2_139 0 0 2 1 240 | data2_140 data2_140 0 0 1 1 241 | data2_141 data2_141 0 0 1 1 242 | data2_142 data2_142 0 0 1 1 243 | data2_143 data2_143 0 0 2 1 244 | data2_144 data2_144 0 0 1 1 245 | data2_145 data2_145 0 0 1 1 246 | data2_146 data2_146 0 0 2 1 247 | data2_147 data2_147 0 0 1 1 248 | data2_148 data2_148 0 0 2 1 249 | data2_149 data2_149 0 0 1 1 250 | data2_150 data2_150 0 0 1 1 251 | data2_151 data2_151 0 0 1 1 252 | data2_152 data2_152 0 0 1 1 253 | data2_153 data2_153 0 0 2 1 254 | data2_154 data2_154 0 0 1 1 255 | data2_155 data2_155 0 0 2 1 256 | data2_156 data2_156 0 0 1 1 257 | data2_157 data2_157 0 0 1 1 258 | data2_158 data2_158 0 0 1 1 259 | data2_159 data2_159 0 0 1 1 260 | data2_160 data2_160 0 0 1 1 261 | data2_161 data2_161 0 0 1 1 262 | data2_162 data2_162 0 0 1 1 263 | data2_163 data2_163 0 0 1 1 264 | data2_164 data2_164 0 0 1 1 265 | data2_165 data2_165 0 0 1 1 266 | data2_166 data2_166 0 0 1 1 267 | data2_167 data2_167 0 0 1 1 268 | data2_168 data2_168 0 0 1 1 269 | data2_169 data2_169 0 0 1 1 270 | data2_170 data2_170 0 0 1 1 271 | data2_171 data2_171 0 0 1 1 272 | data2_172 data2_172 0 0 1 1 273 | data2_173 data2_173 0 0 1 1 274 | data2_174 data2_174 0 0 1 1 275 | data2_175 data2_175 0 0 1 1 276 | data2_176 data2_176 0 0 1 1 277 | data2_177 data2_177 0 0 1 1 278 | data2_178 data2_178 0 0 1 1 279 | data2_179 data2_179 0 0 1 1 280 | data2_180 data2_180 0 0 1 1 281 | data2_181 data2_181 0 0 1 1 282 | data2_182 data2_182 0 0 2 1 283 | data2_183 data2_183 0 0 1 1 284 | data2_184 data2_184 0 0 1 1 285 | data2_185 data2_185 0 0 2 1 286 | data2_186 data2_186 0 0 1 1 287 | data2_187 data2_187 0 0 1 1 288 | data2_188 data2_188 0 0 2 1 289 | data2_189 data2_189 0 0 2 1 290 | data2_190 data2_190 0 0 1 1 291 | data2_191 data2_191 0 0 1 1 292 | data2_192 data2_192 0 0 1 1 293 | data2_193 data2_193 0 0 1 1 294 | data2_194 data2_194 0 0 1 1 295 | data2_195 data2_195 0 0 1 1 296 | data2_196 data2_196 0 0 1 1 297 | data2_197 data2_197 0 0 2 1 298 | data2_198 data2_198 0 0 1 1 299 | data2_199 data2_199 0 0 1 1 300 | data2_200 data2_200 0 0 1 1 301 | data3_201 data3_1 0 0 2 1 302 | data3_202 data3_2 0 0 2 1 303 | data3_203 data3_3 0 0 2 1 304 | data3_204 data3_4 0 0 1 1 305 | data3_205 data3_5 0 0 1 1 306 | data3_206 data3_6 0 0 1 1 307 | data3_207 data3_7 0 0 1 1 308 | data3_208 data3_8 0 0 1 1 309 | data3_209 data3_9 0 0 1 1 310 | data3_210 data3_10 0 0 2 1 311 | data3_211 data3_11 0 0 2 1 312 | data3_212 data3_12 0 0 1 1 313 | data3_213 data3_13 0 0 2 1 314 | data3_214 data3_14 0 0 2 1 315 | data3_215 data3_15 0 0 2 1 316 | data3_216 data3_16 0 0 1 1 317 | data3_217 data3_17 0 0 1 1 318 | data3_218 data3_18 0 0 1 1 319 | data3_219 data3_19 0 0 2 1 320 | data3_220 data3_20 0 0 1 1 321 | data3_221 data3_21 0 0 2 1 322 | data3_222 data3_22 0 0 1 1 323 | data3_223 data3_23 0 0 2 1 324 | data3_224 data3_24 0 0 2 1 325 | data3_225 data3_25 0 0 1 1 326 | data3_226 data3_26 0 0 1 1 327 | data3_227 data3_27 0 0 1 1 328 | data3_228 data3_28 0 0 1 1 329 | data3_229 data3_29 0 0 1 1 330 | data3_230 data3_30 0 0 2 1 331 | data3_231 data3_31 0 0 1 1 332 | data3_232 data3_32 0 0 2 1 333 | data3_233 data3_33 0 0 2 1 334 | data3_234 data3_34 0 0 2 1 335 | data3_235 data3_35 0 0 2 1 336 | data3_236 data3_36 0 0 1 1 337 | data3_237 data3_37 0 0 1 1 338 | data3_238 data3_38 0 0 2 1 339 | data3_239 data3_39 0 0 1 1 340 | data3_240 data3_40 0 0 1 1 341 | data3_241 data3_41 0 0 1 1 342 | data3_242 data3_42 0 0 1 1 343 | data3_243 data3_43 0 0 1 1 344 | data3_244 data3_44 0 0 1 1 345 | data3_245 data3_45 0 0 1 1 346 | data3_246 data3_46 0 0 2 1 347 | data3_247 data3_47 0 0 1 1 348 | data3_248 data3_48 0 0 1 1 349 | data3_249 data3_49 0 0 2 1 350 | data3_250 data3_50 0 0 1 1 351 | data3_251 data3_51 0 0 2 1 352 | data3_252 data3_52 0 0 2 1 353 | data3_253 data3_53 0 0 2 1 354 | data3_254 data3_54 0 0 2 1 355 | data3_255 data3_55 0 0 2 1 356 | data3_256 data3_56 0 0 1 1 357 | data3_257 data3_57 0 0 1 1 358 | data3_258 data3_58 0 0 2 1 359 | data3_259 data3_59 0 0 1 1 360 | data3_260 data3_60 0 0 2 1 361 | data3_261 data3_61 0 0 1 1 362 | data3_262 data3_62 0 0 2 1 363 | data3_263 data3_63 0 0 2 1 364 | data3_264 data3_64 0 0 1 1 365 | data3_265 data3_65 0 0 2 1 366 | data3_266 data3_66 0 0 2 1 367 | data3_267 data3_67 0 0 2 1 368 | data3_268 data3_68 0 0 2 1 369 | data3_269 data3_69 0 0 2 1 370 | data3_270 data3_70 0 0 1 1 371 | data3_271 data3_71 0 0 1 1 372 | data3_272 data3_72 0 0 2 1 373 | data3_273 data3_73 0 0 2 1 374 | data3_274 data3_74 0 0 2 1 375 | data3_275 data3_75 0 0 1 1 376 | data3_276 data3_76 0 0 2 1 377 | data3_277 data3_77 0 0 1 1 378 | data3_278 data3_78 0 0 2 1 379 | data3_279 data3_79 0 0 1 1 380 | data3_280 data3_80 0 0 2 1 381 | data3_281 data3_81 0 0 2 1 382 | data3_282 data3_82 0 0 2 1 383 | data3_283 data3_83 0 0 1 1 384 | data3_284 data3_84 0 0 2 1 385 | data3_285 data3_85 0 0 1 1 386 | data3_286 data3_86 0 0 1 1 387 | data3_287 data3_87 0 0 1 1 388 | data3_288 data3_88 0 0 2 1 389 | data3_289 data3_89 0 0 2 1 390 | data3_290 data3_90 0 0 1 1 391 | data3_291 data3_91 0 0 1 1 392 | data3_292 data3_92 0 0 1 1 393 | data3_293 data3_93 0 0 1 1 394 | data3_294 data3_94 0 0 1 1 395 | data3_295 data3_95 0 0 1 1 396 | data3_296 data3_96 0 0 1 1 397 | data3_297 data3_97 0 0 1 1 398 | data3_298 data3_98 0 0 2 1 399 | data3_299 data3_99 0 0 1 1 400 | data3_300 data3_100 0 0 1 1 401 | data3_301 data3_101 0 0 2 1 402 | data3_302 data3_102 0 0 1 1 403 | data3_303 data3_103 0 0 1 1 404 | data3_304 data3_104 0 0 1 1 405 | data3_305 data3_105 0 0 1 1 406 | data3_306 data3_106 0 0 2 1 407 | data3_307 data3_107 0 0 1 1 408 | data3_308 data3_108 0 0 2 1 409 | data3_309 data3_109 0 0 2 1 410 | data3_310 data3_110 0 0 2 1 411 | data3_311 data3_111 0 0 2 1 412 | data3_312 data3_112 0 0 1 1 413 | data3_313 data3_113 0 0 2 1 414 | data3_314 data3_114 0 0 1 1 415 | data3_315 data3_115 0 0 1 1 416 | data3_316 data3_116 0 0 2 1 417 | data3_317 data3_117 0 0 1 1 418 | data3_318 data3_118 0 0 1 1 419 | data3_319 data3_119 0 0 2 1 420 | data3_320 data3_120 0 0 1 1 421 | data3_321 data3_121 0 0 2 1 422 | data3_322 data3_122 0 0 1 1 423 | data3_323 data3_123 0 0 1 1 424 | data3_324 data3_124 0 0 2 1 425 | data3_325 data3_125 0 0 1 1 426 | data3_326 data3_126 0 0 2 1 427 | data3_327 data3_127 0 0 1 1 428 | data3_328 data3_128 0 0 2 1 429 | data3_329 data3_129 0 0 1 1 430 | data3_330 data3_130 0 0 1 1 431 | data3_331 data3_131 0 0 1 1 432 | data3_332 data3_132 0 0 1 1 433 | data3_333 data3_133 0 0 1 1 434 | data3_334 data3_134 0 0 2 1 435 | data3_335 data3_135 0 0 1 1 436 | data3_336 data3_136 0 0 2 1 437 | data3_337 data3_137 0 0 2 1 438 | data3_338 data3_138 0 0 1 1 439 | data3_339 data3_139 0 0 2 1 440 | data3_340 data3_140 0 0 2 1 441 | data3_341 data3_141 0 0 1 1 442 | data3_342 data3_142 0 0 1 1 443 | data3_343 data3_143 0 0 1 1 444 | data3_344 data3_144 0 0 2 1 445 | data3_345 data3_145 0 0 1 1 446 | data3_346 data3_146 0 0 2 1 447 | data3_347 data3_147 0 0 2 1 448 | data3_348 data3_148 0 0 1 1 449 | data3_349 data3_149 0 0 2 1 450 | data3_350 data3_150 0 0 1 1 451 | data3_351 data3_151 0 0 2 1 452 | data3_352 data3_152 0 0 2 1 453 | data3_353 data3_153 0 0 2 1 454 | data3_354 data3_154 0 0 1 1 455 | data3_355 data3_155 0 0 2 1 456 | data3_356 data3_156 0 0 2 1 457 | data3_357 data3_157 0 0 2 1 458 | data3_358 data3_158 0 0 2 1 459 | data3_359 data3_159 0 0 1 1 460 | data3_360 data3_160 0 0 1 1 461 | data3_361 data3_161 0 0 1 1 462 | data3_362 data3_162 0 0 1 1 463 | data3_363 data3_163 0 0 2 1 464 | data3_364 data3_164 0 0 2 1 465 | data3_365 data3_165 0 0 1 1 466 | data3_366 data3_166 0 0 1 1 467 | data3_367 data3_167 0 0 1 1 468 | data3_368 data3_168 0 0 2 1 469 | data3_369 data3_169 0 0 2 1 470 | data3_370 data3_170 0 0 1 1 471 | data3_371 data3_171 0 0 2 1 472 | data3_372 data3_172 0 0 2 1 473 | data3_373 data3_173 0 0 1 1 474 | data3_374 data3_174 0 0 2 1 475 | data3_375 data3_175 0 0 2 1 476 | data3_376 data3_176 0 0 1 1 477 | data3_377 data3_177 0 0 1 1 478 | data3_378 data3_178 0 0 2 1 479 | data3_379 data3_179 0 0 2 1 480 | data3_380 data3_180 0 0 2 1 481 | data3_381 data3_181 0 0 2 1 482 | data3_382 data3_182 0 0 2 1 483 | data3_383 data3_183 0 0 1 1 484 | data3_384 data3_184 0 0 1 1 485 | data3_385 data3_185 0 0 1 1 486 | data3_386 data3_186 0 0 1 1 487 | data3_387 data3_187 0 0 1 1 488 | data3_388 data3_188 0 0 1 1 489 | data3_389 data3_189 0 0 2 1 490 | data3_390 data3_190 0 0 1 1 491 | data3_391 data3_191 0 0 1 1 492 | data3_392 data3_192 0 0 2 1 493 | data3_393 data3_193 0 0 2 1 494 | data3_394 data3_194 0 0 1 1 495 | data3_395 data3_195 0 0 1 1 496 | data3_396 data3_196 0 0 1 1 497 | data3_397 data3_197 0 0 1 1 498 | data3_398 data3_198 0 0 1 1 499 | data3_399 data3_199 0 0 2 1 500 | data3_400 data3_200 0 0 2 1 501 | data3_401 data3_201 0 0 1 1 502 | data3_402 data3_202 0 0 2 1 503 | data3_403 data3_203 0 0 1 1 504 | data3_404 data3_204 0 0 2 1 505 | data3_405 data3_205 0 0 2 1 506 | data3_406 data3_206 0 0 1 1 507 | data3_407 data3_207 0 0 1 1 508 | data3_408 data3_208 0 0 1 1 509 | data3_409 data3_209 0 0 1 1 510 | data3_410 data3_210 0 0 1 1 511 | data3_411 data3_211 0 0 1 1 512 | data3_412 data3_212 0 0 1 1 513 | data3_413 data3_213 0 0 2 1 514 | data3_414 data3_214 0 0 1 1 515 | data3_415 data3_215 0 0 2 1 516 | data3_416 data3_216 0 0 1 1 517 | data3_417 data3_217 0 0 2 1 518 | data3_418 data3_218 0 0 1 1 519 | data3_419 data3_219 0 0 2 1 520 | data3_420 data3_220 0 0 2 1 521 | data3_421 data3_221 0 0 1 1 522 | data3_422 data3_222 0 0 2 1 523 | data3_423 data3_223 0 0 1 1 524 | data3_424 data3_224 0 0 2 1 525 | data3_425 data3_225 0 0 2 1 526 | data3_426 data3_226 0 0 1 1 527 | data3_427 data3_227 0 0 2 1 528 | data3_428 data3_228 0 0 1 1 529 | data3_429 data3_229 0 0 2 1 530 | data3_430 data3_230 0 0 1 1 531 | data3_431 data3_231 0 0 2 1 532 | data3_432 data3_232 0 0 1 1 533 | data3_433 data3_233 0 0 2 1 534 | data3_434 data3_234 0 0 1 1 535 | data3_435 data3_235 0 0 1 1 536 | data3_436 data3_236 0 0 2 1 537 | data3_437 data3_237 0 0 1 1 538 | data3_438 data3_238 0 0 1 1 539 | data3_439 data3_239 0 0 2 1 540 | data3_440 data3_240 0 0 2 1 541 | data3_441 data3_241 0 0 1 1 542 | data3_442 data3_242 0 0 1 1 543 | data3_443 data3_243 0 0 1 1 544 | data3_444 data3_244 0 0 1 1 545 | data3_445 data3_245 0 0 2 1 546 | data3_446 data3_246 0 0 1 1 547 | data3_447 data3_247 0 0 2 1 548 | data3_448 data3_248 0 0 1 1 549 | data3_449 data3_249 0 0 2 1 550 | data3_450 data3_250 0 0 1 1 551 | data3_451 data3_251 0 0 2 1 552 | data3_452 data3_252 0 0 1 1 553 | data3_453 data3_253 0 0 1 1 554 | data3_454 data3_254 0 0 1 1 555 | data3_455 data3_255 0 0 1 1 556 | data3_456 data3_256 0 0 1 1 557 | data3_457 data3_257 0 0 2 1 558 | data3_458 data3_258 0 0 1 1 559 | data3_459 data3_259 0 0 2 1 560 | data3_460 data3_260 0 0 1 1 561 | data3_461 data3_261 0 0 1 1 562 | data3_462 data3_262 0 0 1 1 563 | data3_463 data3_263 0 0 1 1 564 | data3_464 data3_264 0 0 1 1 565 | data3_465 data3_265 0 0 1 1 566 | data3_466 data3_266 0 0 1 1 567 | data3_467 data3_267 0 0 1 1 568 | data3_468 data3_268 0 0 2 1 569 | data3_469 data3_269 0 0 2 1 570 | data3_470 data3_270 0 0 2 1 571 | data3_471 data3_271 0 0 1 1 572 | data3_472 data3_272 0 0 2 1 573 | data3_473 data3_273 0 0 1 1 574 | data3_474 data3_274 0 0 2 1 575 | data3_475 data3_275 0 0 1 1 576 | data3_476 data3_276 0 0 1 1 577 | data3_477 data3_277 0 0 2 1 578 | data3_478 data3_278 0 0 2 1 579 | data3_479 data3_279 0 0 1 1 580 | data3_480 data3_280 0 0 1 1 581 | data3_481 data3_281 0 0 2 1 582 | data3_482 data3_282 0 0 1 1 583 | data3_483 data3_283 0 0 1 1 584 | data3_484 data3_284 0 0 2 1 585 | data3_485 data3_285 0 0 2 1 586 | data3_486 data3_286 0 0 1 1 587 | data3_487 data3_287 0 0 2 1 588 | data3_488 data3_288 0 0 1 1 589 | data3_489 data3_289 0 0 1 1 590 | data3_490 data3_290 0 0 1 1 591 | data3_491 data3_291 0 0 2 1 592 | data3_492 data3_292 0 0 1 1 593 | data3_493 data3_293 0 0 2 1 594 | data3_494 data3_294 0 0 1 1 595 | data3_495 data3_295 0 0 1 1 596 | data3_496 data3_296 0 0 1 1 597 | data3_497 data3_297 0 0 2 1 598 | data3_498 data3_298 0 0 1 1 599 | data3_499 data3_299 0 0 1 1 600 | data3_500 data3_300 0 0 1 1 601 | data3_501 data3_301 0 0 1 1 602 | data3_502 data3_302 0 0 1 1 603 | data3_503 data3_303 0 0 1 1 604 | data3_504 data3_304 0 0 2 1 605 | data3_505 data3_305 0 0 1 1 606 | data3_506 data3_306 0 0 1 1 607 | data3_507 data3_307 0 0 1 1 608 | data3_508 data3_308 0 0 2 1 609 | data3_509 data3_309 0 0 2 1 610 | data3_510 data3_310 0 0 2 1 611 | data3_511 data3_311 0 0 1 1 612 | data3_512 data3_312 0 0 2 1 613 | data3_513 data3_313 0 0 1 1 614 | data3_514 data3_314 0 0 2 1 615 | data3_515 data3_315 0 0 2 1 616 | data3_516 data3_316 0 0 1 1 617 | data3_517 data3_317 0 0 1 1 618 | data3_518 data3_318 0 0 1 1 619 | data3_519 data3_319 0 0 1 1 620 | data3_520 data3_320 0 0 1 1 621 | data3_521 data3_321 0 0 2 1 622 | data3_522 data3_322 0 0 1 1 623 | data3_523 data3_323 0 0 1 1 624 | data3_524 data3_324 0 0 1 1 625 | data3_525 data3_325 0 0 2 1 626 | data3_526 data3_326 0 0 1 1 627 | data3_527 data3_327 0 0 1 1 628 | data3_528 data3_328 0 0 1 1 629 | data3_529 data3_329 0 0 2 1 630 | data3_530 data3_330 0 0 1 1 631 | data3_531 data3_331 0 0 2 1 632 | data3_532 data3_332 0 0 2 1 633 | data3_533 data3_333 0 0 1 1 634 | data3_534 data3_334 0 0 1 1 635 | data3_535 data3_335 0 0 2 1 636 | data3_536 data3_336 0 0 1 1 637 | data3_537 data3_337 0 0 2 1 638 | data3_538 data3_338 0 0 2 1 639 | data3_539 data3_339 0 0 2 1 640 | data3_540 data3_340 0 0 2 1 641 | data3_541 data3_341 0 0 1 1 642 | data3_542 data3_342 0 0 1 1 643 | data3_543 data3_343 0 0 1 1 644 | data3_544 data3_344 0 0 2 1 645 | data3_545 data3_345 0 0 2 1 646 | data3_546 data3_346 0 0 1 1 647 | data3_547 data3_347 0 0 1 1 648 | data3_548 data3_348 0 0 2 1 649 | data3_549 data3_349 0 0 1 1 650 | data3_550 data3_350 0 0 1 2 651 | data3_551 data3_351 0 0 2 2 652 | data3_552 data3_352 0 0 1 2 653 | data3_553 data3_353 0 0 1 2 654 | data3_554 data3_354 0 0 1 2 655 | data3_555 data3_355 0 0 2 2 656 | data3_556 data3_356 0 0 1 2 657 | data3_557 data3_357 0 0 2 2 658 | data3_558 data3_358 0 0 2 2 659 | data3_559 data3_359 0 0 2 2 660 | data3_560 data3_360 0 0 1 2 661 | data3_561 data3_361 0 0 1 2 662 | data3_562 data3_362 0 0 1 2 663 | data3_563 data3_363 0 0 2 2 664 | data3_564 data3_364 0 0 2 2 665 | data3_565 data3_365 0 0 1 2 666 | data3_566 data3_366 0 0 1 2 667 | data3_567 data3_367 0 0 1 2 668 | data3_568 data3_368 0 0 1 2 669 | data3_569 data3_369 0 0 1 2 670 | data3_570 data3_370 0 0 1 2 671 | data3_571 data3_371 0 0 2 2 672 | data3_572 data3_372 0 0 2 2 673 | data3_573 data3_373 0 0 1 2 674 | data3_574 data3_374 0 0 1 2 675 | data3_575 data3_375 0 0 2 2 676 | data3_576 data3_376 0 0 1 2 677 | data3_577 data3_377 0 0 1 2 678 | data3_578 data3_378 0 0 1 2 679 | data3_579 data3_379 0 0 1 2 680 | data3_580 data3_380 0 0 1 2 681 | data3_581 data3_381 0 0 1 2 682 | data3_582 data3_382 0 0 1 2 683 | data3_583 data3_383 0 0 2 2 684 | data3_584 data3_384 0 0 2 2 685 | data3_585 data3_385 0 0 1 2 686 | data3_586 data3_386 0 0 1 2 687 | data3_587 data3_387 0 0 2 2 688 | data3_588 data3_388 0 0 2 2 689 | data3_589 data3_389 0 0 2 2 690 | data3_590 data3_390 0 0 1 2 691 | data3_591 data3_391 0 0 1 2 692 | data3_592 data3_392 0 0 1 2 693 | data3_593 data3_393 0 0 1 2 694 | data3_594 data3_394 0 0 1 2 695 | data3_595 data3_395 0 0 1 2 696 | data3_596 data3_396 0 0 2 2 697 | data3_597 data3_397 0 0 1 2 698 | data3_598 data3_398 0 0 2 2 699 | data3_599 data3_399 0 0 1 2 700 | data3_600 data3_400 0 0 1 2 701 | data3_601 data3_401 0 0 2 2 702 | data3_602 data3_402 0 0 1 2 703 | data3_603 data3_403 0 0 2 2 704 | data3_604 data3_404 0 0 1 2 705 | data3_605 data3_405 0 0 1 2 706 | data3_606 data3_406 0 0 1 2 707 | data3_607 data3_407 0 0 2 2 708 | data3_608 data3_408 0 0 2 2 709 | data3_609 data3_409 0 0 1 2 710 | data3_610 data3_410 0 0 1 2 711 | data3_611 data3_411 0 0 1 2 712 | data3_612 data3_412 0 0 1 2 713 | data3_613 data3_413 0 0 1 2 714 | data3_614 data3_414 0 0 1 2 715 | data3_615 data3_415 0 0 1 2 716 | data3_616 data3_416 0 0 1 2 717 | data3_617 data3_417 0 0 1 2 718 | data3_618 data3_418 0 0 1 2 719 | data3_619 data3_419 0 0 2 2 720 | data3_620 data3_420 0 0 1 2 721 | data3_621 data3_421 0 0 2 2 722 | data3_622 data3_422 0 0 1 2 723 | data3_623 data3_423 0 0 2 2 724 | data3_624 data3_424 0 0 1 2 725 | data3_625 data3_425 0 0 1 2 726 | data3_626 data3_426 0 0 1 2 727 | data3_627 data3_427 0 0 1 2 728 | data3_628 data3_428 0 0 1 2 729 | data3_629 data3_429 0 0 1 2 730 | data3_630 data3_430 0 0 1 2 731 | data3_631 data3_431 0 0 1 2 732 | data3_632 data3_432 0 0 1 2 733 | data3_633 data3_433 0 0 2 2 734 | data3_634 data3_434 0 0 1 2 735 | data3_635 data3_435 0 0 1 2 736 | data3_636 data3_436 0 0 1 2 737 | data3_637 data3_437 0 0 1 2 738 | data3_638 data3_438 0 0 1 2 739 | data3_639 data3_439 0 0 1 2 740 | data3_640 data3_440 0 0 2 2 741 | data3_641 data3_441 0 0 1 2 742 | data3_642 data3_442 0 0 2 2 743 | data3_643 data3_443 0 0 1 2 744 | data3_644 data3_444 0 0 2 2 745 | data3_645 data3_445 0 0 1 2 746 | data3_646 data3_446 0 0 2 2 747 | data3_647 data3_447 0 0 2 2 748 | data3_648 data3_448 0 0 1 2 749 | data3_649 data3_449 0 0 1 2 750 | data3_650 data3_450 0 0 1 2 751 | data3_651 data3_451 0 0 1 2 752 | data3_652 data3_452 0 0 1 2 753 | data3_653 data3_453 0 0 1 2 754 | data3_654 data3_454 0 0 1 2 755 | data3_655 data3_455 0 0 1 2 756 | data3_656 data3_456 0 0 2 2 757 | data3_657 data3_457 0 0 2 2 758 | data3_658 data3_458 0 0 1 2 759 | data3_659 data3_459 0 0 2 2 760 | data3_660 data3_460 0 0 2 2 761 | data3_661 data3_461 0 0 1 2 762 | data3_662 data3_462 0 0 1 2 763 | data3_663 data3_463 0 0 1 2 764 | data3_664 data3_464 0 0 1 2 765 | data3_665 data3_465 0 0 2 2 766 | data3_666 data3_466 0 0 1 2 767 | data3_667 data3_467 0 0 1 2 768 | data3_668 data3_468 0 0 2 2 769 | data3_669 data3_469 0 0 1 2 770 | data3_670 data3_470 0 0 1 2 771 | data3_671 data3_471 0 0 1 2 772 | data3_672 data3_472 0 0 1 2 773 | data3_673 data3_473 0 0 2 2 774 | data3_674 data3_474 0 0 1 2 775 | data3_675 data3_475 0 0 2 2 776 | data3_676 data3_476 0 0 2 2 777 | data3_677 data3_477 0 0 2 2 778 | data3_678 data3_478 0 0 2 2 779 | data3_679 data3_479 0 0 1 2 780 | data3_680 data3_480 0 0 1 2 781 | data3_681 data3_481 0 0 2 2 782 | data3_682 data3_482 0 0 1 2 783 | data3_683 data3_483 0 0 1 2 784 | data3_684 data3_484 0 0 2 2 785 | data3_685 data3_485 0 0 1 2 786 | data3_686 data3_486 0 0 1 2 787 | data3_687 data3_487 0 0 1 2 788 | data3_688 data3_488 0 0 1 2 789 | data3_689 data3_489 0 0 2 2 790 | data3_690 data3_490 0 0 1 2 791 | data3_691 data3_491 0 0 2 2 792 | data3_692 data3_492 0 0 2 2 793 | data3_693 data3_493 0 0 1 2 794 | data3_694 data3_494 0 0 1 2 795 | data3_695 data3_495 0 0 2 2 796 | data3_696 data3_496 0 0 1 2 797 | data3_697 data3_497 0 0 1 2 798 | data3_698 data3_498 0 0 2 2 799 | data3_699 data3_499 0 0 1 2 800 | data3_700 data3_500 0 0 1 2 801 | data3_701 data3_501 0 0 2 2 802 | data3_702 data3_502 0 0 2 2 803 | data3_703 data3_503 0 0 1 2 804 | data3_704 data3_504 0 0 1 2 805 | data3_705 data3_505 0 0 1 2 806 | data3_706 data3_506 0 0 2 2 807 | data3_707 data3_507 0 0 1 2 808 | data3_708 data3_508 0 0 1 2 809 | data3_709 data3_509 0 0 2 2 810 | data3_710 data3_510 0 0 2 2 811 | data3_711 data3_511 0 0 2 2 812 | data3_712 data3_512 0 0 1 2 813 | data3_713 data3_513 0 0 1 2 814 | data3_714 data3_514 0 0 1 2 815 | data3_715 data3_515 0 0 1 2 816 | data3_716 data3_516 0 0 2 2 817 | data3_717 data3_517 0 0 2 2 818 | data3_718 data3_518 0 0 2 2 819 | data3_719 data3_519 0 0 1 2 820 | data3_720 data3_520 0 0 1 2 821 | data3_721 data3_521 0 0 1 2 822 | data3_722 data3_522 0 0 1 2 823 | data3_723 data3_523 0 0 1 2 824 | data3_724 data3_524 0 0 1 2 825 | data3_725 data3_525 0 0 1 2 826 | data3_726 data3_526 0 0 1 2 827 | data3_727 data3_527 0 0 1 2 828 | data3_728 data3_528 0 0 1 2 829 | data3_729 data3_529 0 0 2 2 830 | data3_730 data3_530 0 0 2 2 831 | data3_731 data3_531 0 0 2 2 832 | data3_732 data3_532 0 0 1 2 833 | data3_733 data3_533 0 0 1 2 834 | data3_734 data3_534 0 0 2 2 835 | data3_735 data3_535 0 0 2 2 836 | data3_736 data3_536 0 0 1 2 837 | data3_737 data3_537 0 0 1 2 838 | data3_738 data3_538 0 0 1 2 839 | data3_739 data3_539 0 0 1 2 840 | data3_740 data3_540 0 0 1 2 841 | data3_741 data3_541 0 0 1 2 842 | data3_742 data3_542 0 0 1 2 843 | data3_743 data3_543 0 0 1 2 844 | data3_744 data3_544 0 0 2 2 845 | data3_745 data3_545 0 0 1 2 846 | data3_746 data3_546 0 0 2 2 847 | data3_747 data3_547 0 0 1 2 848 | data3_748 data3_548 0 0 2 2 849 | data3_749 data3_549 0 0 1 2 850 | data3_750 data3_550 0 0 1 2 851 | data3_751 data3_551 0 0 1 2 852 | data3_752 data3_552 0 0 2 2 853 | data3_753 data3_553 0 0 1 2 854 | data3_754 data3_554 0 0 2 2 855 | data3_755 data3_555 0 0 1 2 856 | data3_756 data3_556 0 0 1 2 857 | data3_757 data3_557 0 0 2 2 858 | data3_758 data3_558 0 0 1 2 859 | data3_759 data3_559 0 0 2 2 860 | data3_760 data3_560 0 0 1 2 861 | data3_761 data3_561 0 0 2 2 862 | data3_762 data3_562 0 0 1 2 863 | data3_763 data3_563 0 0 1 2 864 | data3_764 data3_564 0 0 1 2 865 | data3_765 data3_565 0 0 1 2 866 | data3_766 data3_566 0 0 1 2 867 | data3_767 data3_567 0 0 1 2 868 | data3_768 data3_568 0 0 1 2 869 | data3_769 data3_569 0 0 2 2 870 | data3_770 data3_570 0 0 2 2 871 | data3_771 data3_571 0 0 1 2 872 | data3_772 data3_572 0 0 1 2 873 | data3_773 data3_573 0 0 1 2 874 | data3_774 data3_574 0 0 1 2 875 | data3_775 data3_575 0 0 1 2 876 | data3_776 data3_576 0 0 1 2 877 | data3_777 data3_577 0 0 1 2 878 | data3_778 data3_578 0 0 1 2 879 | data3_779 data3_579 0 0 1 2 880 | data3_780 data3_580 0 0 2 2 881 | data3_781 data3_581 0 0 1 2 882 | data3_782 data3_582 0 0 1 2 883 | data3_783 data3_583 0 0 1 2 884 | data3_784 data3_584 0 0 1 2 885 | data3_785 data3_585 0 0 1 2 886 | data3_786 data3_586 0 0 2 2 887 | data3_787 data3_587 0 0 1 2 888 | data3_788 data3_588 0 0 1 2 889 | data3_789 data3_589 0 0 2 2 890 | data3_790 data3_590 0 0 1 2 891 | data3_791 data3_591 0 0 2 2 892 | data3_792 data3_592 0 0 1 2 893 | data3_793 data3_593 0 0 1 2 894 | data3_794 data3_594 0 0 1 2 895 | data3_795 data3_595 0 0 1 2 896 | data3_796 data3_596 0 0 1 2 897 | data3_797 data3_597 0 0 1 2 898 | data3_798 data3_598 0 0 1 2 899 | data3_799 data3_599 0 0 1 2 900 | data3_800 data3_600 0 0 2 2 901 | data3_801 data3_601 0 0 1 2 902 | data3_802 data3_602 0 0 2 2 903 | data3_803 data3_603 0 0 1 2 904 | data3_804 data3_604 0 0 1 2 905 | data3_805 data3_605 0 0 1 2 906 | data3_806 data3_606 0 0 1 2 907 | data3_807 data3_607 0 0 1 2 908 | data3_808 data3_608 0 0 1 2 909 | data3_809 data3_609 0 0 1 2 910 | data3_810 data3_610 0 0 2 2 911 | data3_811 data3_611 0 0 2 2 912 | data3_812 data3_612 0 0 1 2 913 | data3_813 data3_613 0 0 2 2 914 | data3_814 data3_614 0 0 1 2 915 | data3_815 data3_615 0 0 1 2 916 | data3_816 data3_616 0 0 2 2 917 | data3_817 data3_617 0 0 2 2 918 | data3_818 data3_618 0 0 1 2 919 | data3_819 data3_619 0 0 1 2 920 | data3_820 data3_620 0 0 1 2 921 | data3_821 data3_621 0 0 1 2 922 | data3_822 data3_622 0 0 1 2 923 | data3_823 data3_623 0 0 1 2 924 | data3_824 data3_624 0 0 2 2 925 | data3_825 data3_625 0 0 1 2 926 | data3_826 data3_626 0 0 1 2 927 | data3_827 data3_627 0 0 2 2 928 | data3_828 data3_628 0 0 1 2 929 | data3_829 data3_629 0 0 1 2 930 | data3_830 data3_630 0 0 1 2 931 | data3_831 data3_631 0 0 1 2 932 | data3_832 data3_632 0 0 1 2 933 | data3_833 data3_633 0 0 2 2 934 | data3_834 data3_634 0 0 1 2 935 | data3_835 data3_635 0 0 1 2 936 | data3_836 data3_636 0 0 2 2 937 | data3_837 data3_637 0 0 1 2 938 | data3_838 data3_638 0 0 1 2 939 | data3_839 data3_639 0 0 2 2 940 | data3_840 data3_640 0 0 2 2 941 | data3_841 data3_641 0 0 1 2 942 | data3_842 data3_642 0 0 2 2 943 | data3_843 data3_643 0 0 2 2 944 | data3_844 data3_644 0 0 2 2 945 | data3_845 data3_645 0 0 2 2 946 | data3_846 data3_646 0 0 2 2 947 | data3_847 data3_647 0 0 1 2 948 | data3_848 data3_648 0 0 2 2 949 | data3_849 data3_649 0 0 2 2 950 | data3_850 data3_650 0 0 2 2 951 | data3_851 data3_651 0 0 2 2 952 | data3_852 data3_652 0 0 1 2 953 | data3_853 data3_653 0 0 1 2 954 | data3_854 data3_654 0 0 2 2 955 | data3_855 data3_655 0 0 1 2 956 | data3_856 data3_656 0 0 2 2 957 | data3_857 data3_657 0 0 1 2 958 | data3_858 data3_658 0 0 1 2 959 | data3_859 data3_659 0 0 2 2 960 | data3_860 data3_660 0 0 1 2 961 | data3_861 data3_661 0 0 1 2 962 | data3_862 data3_662 0 0 1 2 963 | data3_863 data3_663 0 0 1 2 964 | data3_864 data3_664 0 0 1 2 965 | data3_865 data3_665 0 0 2 2 966 | data3_866 data3_666 0 0 1 2 967 | data3_867 data3_667 0 0 1 2 968 | data3_868 data3_668 0 0 2 2 969 | data3_869 data3_669 0 0 1 2 970 | data3_870 data3_670 0 0 1 2 971 | data3_871 data3_671 0 0 1 2 972 | data3_872 data3_672 0 0 1 2 973 | data3_873 data3_673 0 0 2 2 974 | data3_874 data3_674 0 0 1 2 975 | data3_875 data3_675 0 0 2 2 976 | data3_876 data3_676 0 0 1 2 977 | data3_877 data3_677 0 0 1 2 978 | data3_878 data3_678 0 0 1 2 979 | data3_879 data3_679 0 0 1 2 980 | data3_880 data3_680 0 0 1 2 981 | data3_881 data3_681 0 0 1 2 982 | data3_882 data3_682 0 0 1 2 983 | data3_883 data3_683 0 0 1 2 984 | data3_884 data3_684 0 0 1 2 985 | data3_885 data3_685 0 0 1 2 986 | data3_886 data3_686 0 0 2 2 987 | data3_887 data3_687 0 0 1 2 988 | data3_888 data3_688 0 0 1 2 989 | data3_889 data3_689 0 0 1 2 990 | data3_890 data3_690 0 0 1 2 991 | data3_891 data3_691 0 0 1 2 992 | data3_892 data3_692 0 0 1 2 993 | data3_893 data3_693 0 0 1 2 994 | data3_894 data3_694 0 0 1 2 995 | data3_895 data3_695 0 0 1 2 996 | data3_896 data3_696 0 0 2 2 997 | data3_897 data3_697 0 0 1 2 998 | data3_898 data3_698 0 0 1 2 999 | data3_899 data3_699 0 0 1 2 1000 | data3_900 data3_700 0 0 1 2 1001 | data3_901 data3_701 0 0 1 2 1002 | data3_902 data3_702 0 0 1 2 1003 | data3_903 data3_703 0 0 1 2 1004 | data3_904 data3_704 0 0 1 2 1005 | data3_905 data3_705 0 0 1 2 1006 | data3_906 data3_706 0 0 1 2 1007 | data3_907 data3_707 0 0 1 2 1008 | data3_908 data3_708 0 0 1 2 1009 | data3_909 data3_709 0 0 2 2 1010 | data3_910 data3_710 0 0 2 2 1011 | data3_911 data3_711 0 0 1 2 1012 | data3_912 data3_712 0 0 1 2 1013 | data3_913 data3_713 0 0 1 2 1014 | data3_914 data3_714 0 0 2 2 1015 | data3_915 data3_715 0 0 1 2 1016 | data3_916 data3_716 0 0 2 2 1017 | data3_917 data3_717 0 0 1 2 1018 | data3_918 data3_718 0 0 2 2 1019 | data3_919 data3_719 0 0 1 2 1020 | data3_920 data3_720 0 0 1 2 1021 | data3_921 data3_721 0 0 1 2 1022 | data3_922 data3_722 0 0 1 2 1023 | data3_923 data3_723 0 0 2 2 1024 | data3_924 data3_724 0 0 1 2 1025 | data3_925 data3_725 0 0 1 2 1026 | data3_926 data3_726 0 0 1 2 1027 | data3_927 data3_727 0 0 2 2 1028 | data3_928 data3_728 0 0 1 2 1029 | data3_929 data3_729 0 0 1 2 1030 | data3_930 data3_730 0 0 2 2 1031 | data3_931 data3_731 0 0 2 2 1032 | data3_932 data3_732 0 0 1 2 1033 | data3_933 data3_733 0 0 1 2 1034 | data3_934 data3_734 0 0 1 2 1035 | data3_935 data3_735 0 0 1 2 1036 | data3_936 data3_736 0 0 1 2 1037 | data3_937 data3_737 0 0 1 2 1038 | data3_938 data3_738 0 0 2 2 1039 | data3_939 data3_739 0 0 1 2 1040 | data3_940 data3_740 0 0 1 2 1041 | data3_941 data3_741 0 0 1 2 1042 | data3_942 data3_742 0 0 2 2 1043 | data3_943 data3_743 0 0 1 2 1044 | data3_944 data3_744 0 0 1 2 1045 | data3_945 data3_745 0 0 1 2 1046 | data3_946 data3_746 0 0 1 2 1047 | data3_947 data3_747 0 0 1 2 1048 | data3_948 data3_748 0 0 2 2 1049 | data3_949 data3_749 0 0 2 2 1050 | data3_950 data3_750 0 0 1 2 1051 | data3_951 data3_751 0 0 1 2 1052 | data3_952 data3_752 0 0 1 2 1053 | data3_953 data3_753 0 0 1 2 1054 | data3_954 data3_754 0 0 1 2 1055 | data3_955 data3_755 0 0 2 2 1056 | data3_956 data3_756 0 0 2 2 1057 | data3_957 data3_757 0 0 1 2 1058 | data3_958 data3_758 0 0 1 2 1059 | data3_959 data3_759 0 0 1 2 1060 | data3_960 data3_760 0 0 2 2 1061 | data3_961 data3_761 0 0 2 2 1062 | data3_962 data3_762 0 0 2 2 1063 | data3_963 data3_763 0 0 1 2 1064 | data3_964 data3_764 0 0 1 2 1065 | data3_965 data3_765 0 0 1 2 1066 | data3_966 data3_766 0 0 1 2 1067 | data3_967 data3_767 0 0 2 2 1068 | data3_968 data3_768 0 0 1 2 1069 | data3_969 data3_769 0 0 1 2 1070 | data3_970 data3_770 0 0 1 2 1071 | data3_971 data3_771 0 0 1 2 1072 | data3_972 data3_772 0 0 1 2 1073 | data3_973 data3_773 0 0 1 2 1074 | data3_974 data3_774 0 0 2 2 1075 | data3_975 data3_775 0 0 1 2 1076 | data3_976 data3_776 0 0 1 2 1077 | data3_977 data3_777 0 0 1 2 1078 | data3_978 data3_778 0 0 1 2 1079 | data3_979 data3_779 0 0 1 2 1080 | data3_980 data3_780 0 0 2 2 1081 | data3_981 data3_781 0 0 2 2 1082 | data3_982 data3_782 0 0 1 2 1083 | data3_983 data3_783 0 0 2 2 1084 | data3_984 data3_784 0 0 1 2 1085 | data3_985 data3_785 0 0 1 2 1086 | data3_986 data3_786 0 0 1 2 1087 | data3_987 data3_787 0 0 1 2 1088 | data3_988 data3_788 0 0 2 2 1089 | data3_989 data3_789 0 0 1 2 1090 | data3_990 data3_790 0 0 2 2 1091 | data3_991 data3_791 0 0 2 2 1092 | data3_992 data3_792 0 0 2 2 1093 | data3_993 data3_793 0 0 1 2 1094 | data3_994 data3_794 0 0 2 2 1095 | data3_995 data3_795 0 0 2 2 1096 | data3_996 data3_796 0 0 1 2 1097 | data3_997 data3_797 0 0 2 2 1098 | data3_998 data3_798 0 0 2 2 1099 | data3_999 data3_799 0 0 1 2 1100 | data3_1000 data3_800 0 0 1 2 1101 | data3_1001 data3_801 0 0 1 2 1102 | data3_1002 data3_802 0 0 1 2 1103 | data3_1003 data3_803 0 0 1 2 1104 | data3_1004 data3_804 0 0 1 2 1105 | data3_1005 data3_805 0 0 1 2 1106 | data3_1006 data3_806 0 0 2 2 1107 | data3_1007 data3_807 0 0 2 2 1108 | data3_1008 data3_808 0 0 2 2 1109 | data3_1009 data3_809 0 0 1 2 1110 | data3_1010 data3_810 0 0 1 2 1111 | data3_1011 data3_811 0 0 2 2 1112 | data3_1012 data3_812 0 0 1 2 1113 | data3_1013 data3_813 0 0 1 2 1114 | data3_1014 data3_814 0 0 1 2 1115 | data3_1015 data3_815 0 0 1 2 1116 | data3_1016 data3_816 0 0 1 2 1117 | data3_1017 data3_817 0 0 2 2 1118 | data3_1018 data3_818 0 0 1 2 1119 | data3_1019 data3_819 0 0 2 2 1120 | data3_1020 data3_820 0 0 2 2 1121 | data3_1021 data3_821 0 0 2 2 1122 | data3_1022 data3_822 0 0 2 2 1123 | data3_1023 data3_823 0 0 1 2 1124 | data3_1024 data3_824 0 0 1 2 1125 | data3_1025 data3_825 0 0 1 2 1126 | data3_1026 data3_826 0 0 1 2 1127 | data3_1027 data3_827 0 0 2 2 1128 | data3_1028 data3_828 0 0 2 2 1129 | data3_1029 data3_829 0 0 1 2 1130 | data3_1030 data3_830 0 0 1 2 1131 | data3_1031 data3_831 0 0 1 2 1132 | data3_1032 data3_832 0 0 2 2 1133 | data3_1033 data3_833 0 0 1 2 1134 | data3_1034 data3_834 0 0 1 2 1135 | data3_1035 data3_835 0 0 1 2 1136 | data3_1036 data3_836 0 0 1 2 1137 | data3_1037 data3_837 0 0 2 2 1138 | data3_1038 data3_838 0 0 1 2 1139 | data3_1039 data3_839 0 0 2 2 1140 | data3_1040 data3_840 0 0 1 2 1141 | data3_1041 data3_841 0 0 1 2 1142 | data3_1042 data3_842 0 0 1 2 1143 | data3_1043 data3_843 0 0 2 2 1144 | data3_1044 data3_844 0 0 2 2 1145 | data3_1045 data3_845 0 0 2 2 1146 | data3_1046 data3_846 0 0 1 2 1147 | data3_1047 data3_847 0 0 1 2 1148 | data3_1048 data3_848 0 0 1 2 1149 | data3_1049 data3_849 0 0 1 2 1150 | data3_1050 data3_850 0 0 1 2 1151 | data3_1051 data3_851 0 0 2 2 1152 | data3_1052 data3_852 0 0 1 2 1153 | data3_1053 data3_853 0 0 1 2 1154 | data3_1054 data3_854 0 0 1 2 1155 | data3_1055 data3_855 0 0 2 2 1156 | data3_1056 data3_856 0 0 2 2 1157 | data3_1057 data3_857 0 0 1 2 1158 | data3_1058 data3_858 0 0 2 2 1159 | data3_1059 data3_859 0 0 1 2 1160 | data3_1060 data3_860 0 0 1 2 1161 | data3_1061 data3_861 0 0 1 2 1162 | data3_1062 data3_862 0 0 1 2 1163 | data3_1063 data3_863 0 0 2 2 1164 | data3_1064 data3_864 0 0 2 2 1165 | data3_1065 data3_865 0 0 2 2 1166 | data3_1066 data3_866 0 0 1 2 1167 | data3_1067 data3_867 0 0 1 2 1168 | data3_1068 data3_868 0 0 1 2 1169 | data3_1069 data3_869 0 0 1 2 1170 | data3_1070 data3_870 0 0 1 2 1171 | data3_1071 data3_871 0 0 1 2 1172 | data3_1072 data3_872 0 0 2 2 1173 | data3_1073 data3_873 0 0 1 2 1174 | data3_1074 data3_874 0 0 1 2 1175 | data3_1075 data3_875 0 0 1 2 1176 | data3_1076 data3_876 0 0 1 2 1177 | data3_1077 data3_877 0 0 2 2 1178 | data3_1078 data3_878 0 0 2 2 1179 | data3_1079 data3_879 0 0 1 2 1180 | data3_1080 data3_880 0 0 2 2 1181 | data3_1081 data3_881 0 0 1 2 1182 | data3_1082 data3_882 0 0 2 2 1183 | data3_1083 data3_883 0 0 1 2 1184 | data3_1084 data3_884 0 0 2 2 1185 | data3_1085 data3_885 0 0 1 2 1186 | data3_1086 data3_886 0 0 1 2 1187 | data3_1087 data3_887 0 0 1 2 1188 | data3_1088 data3_888 0 0 1 2 1189 | data3_1089 data3_889 0 0 1 2 1190 | data3_1090 data3_890 0 0 1 2 1191 | data3_1091 data3_891 0 0 2 2 1192 | data3_1092 data3_892 0 0 1 2 1193 | data3_1093 data3_893 0 0 1 2 1194 | data3_1094 data3_894 0 0 1 2 1195 | data3_1095 data3_895 0 0 2 2 1196 | data3_1096 data3_896 0 0 1 2 1197 | data3_1097 data3_897 0 0 1 2 1198 | data3_1098 data3_898 0 0 1 2 1199 | data3_1099 data3_899 0 0 2 2 1200 | data3_1100 data3_900 0 0 1 2 1201 | data3_1101 data3_901 0 0 1 2 1202 | data3_1102 data3_902 0 0 1 2 1203 | data3_1103 data3_903 0 0 2 2 1204 | data3_1104 data3_904 0 0 1 2 1205 | data3_1105 data3_905 0 0 1 2 1206 | data3_1106 data3_906 0 0 1 2 1207 | data3_1107 data3_907 0 0 2 2 1208 | data3_1108 data3_908 0 0 2 2 1209 | data3_1109 data3_909 0 0 2 2 1210 | data3_1110 data3_910 0 0 1 2 1211 | data3_1111 data3_911 0 0 1 2 1212 | data3_1112 data3_912 0 0 1 2 1213 | data3_1113 data3_913 0 0 2 2 1214 | data3_1114 data3_914 0 0 1 2 1215 | data3_1115 data3_915 0 0 2 2 1216 | data3_1116 data3_916 0 0 1 2 1217 | data3_1117 data3_917 0 0 1 2 1218 | data3_1118 data3_918 0 0 1 2 1219 | data3_1119 data3_919 0 0 1 2 1220 | data3_1120 data3_920 0 0 1 2 1221 | data3_1121 data3_921 0 0 1 2 1222 | data3_1122 data3_922 0 0 2 2 1223 | data3_1123 data3_923 0 0 1 2 1224 | data3_1124 data3_924 0 0 1 2 1225 | data3_1125 data3_925 0 0 1 2 1226 | data3_1126 data3_926 0 0 2 2 1227 | data3_1127 data3_927 0 0 1 2 1228 | data3_1128 data3_928 0 0 1 2 1229 | data3_1129 data3_929 0 0 1 2 1230 | data3_1130 data3_930 0 0 1 2 1231 | data3_1131 data3_931 0 0 2 2 1232 | data3_1132 data3_932 0 0 1 2 1233 | data3_1133 data3_933 0 0 1 2 1234 | data3_1134 data3_934 0 0 2 2 1235 | data3_1135 data3_935 0 0 1 2 1236 | data3_1136 data3_936 0 0 1 2 1237 | data3_1137 data3_937 0 0 1 2 1238 | data3_1138 data3_938 0 0 1 2 1239 | data3_1139 data3_939 0 0 1 2 1240 | data3_1140 data3_940 0 0 1 2 1241 | data3_1141 data3_941 0 0 1 2 1242 | data3_1142 data3_942 0 0 2 2 1243 | data3_1143 data3_943 0 0 1 2 1244 | data3_1144 data3_944 0 0 2 2 1245 | data3_1145 data3_945 0 0 1 2 1246 | data3_1146 data3_946 0 0 1 2 1247 | data3_1147 data3_947 0 0 2 2 1248 | data3_1148 data3_948 0 0 2 2 1249 | data3_1149 data3_949 0 0 1 2 1250 | data3_1150 data3_950 0 0 2 2 1251 | data3_1151 data3_951 0 0 1 2 1252 | data3_1152 data3_952 0 0 1 2 1253 | data3_1153 data3_953 0 0 1 2 1254 | data3_1154 data3_954 0 0 1 2 1255 | data3_1155 data3_955 0 0 1 2 1256 | data3_1156 data3_956 0 0 2 2 1257 | data3_1157 data3_957 0 0 2 2 1258 | data3_1158 data3_958 0 0 1 2 1259 | data3_1159 data3_959 0 0 1 2 1260 | data3_1160 data3_960 0 0 1 2 1261 | data3_1161 data3_961 0 0 2 2 1262 | data3_1162 data3_962 0 0 2 2 1263 | data3_1163 data3_963 0 0 1 2 1264 | data3_1164 data3_964 0 0 1 2 1265 | data3_1165 data3_965 0 0 1 2 1266 | data3_1166 data3_966 0 0 2 2 1267 | data3_1167 data3_967 0 0 2 2 1268 | data3_1168 data3_968 0 0 2 2 1269 | data3_1169 data3_969 0 0 1 2 1270 | data3_1170 data3_970 0 0 1 2 1271 | data3_1171 data3_971 0 0 2 2 1272 | data3_1172 data3_972 0 0 1 2 1273 | data3_1173 data3_973 0 0 1 2 1274 | data3_1174 data3_974 0 0 1 2 1275 | data3_1175 data3_975 0 0 2 2 1276 | data3_1176 data3_976 0 0 1 2 1277 | data3_1177 data3_977 0 0 1 2 1278 | data3_1178 data3_978 0 0 1 2 1279 | data3_1179 data3_979 0 0 1 2 1280 | data3_1180 data3_980 0 0 1 2 1281 | data3_1181 data3_981 0 0 1 2 1282 | data3_1182 data3_982 0 0 1 2 1283 | data3_1183 data3_983 0 0 1 2 1284 | data3_1184 data3_984 0 0 1 2 1285 | data3_1185 data3_985 0 0 1 2 1286 | data3_1186 data3_986 0 0 1 2 1287 | data3_1187 data3_987 0 0 1 2 1288 | data3_1188 data3_988 0 0 2 2 1289 | data3_1189 data3_989 0 0 1 2 1290 | data3_1190 data3_990 0 0 1 2 1291 | data3_1191 data3_991 0 0 1 2 1292 | data3_1192 data3_992 0 0 1 2 1293 | data3_1193 data3_993 0 0 1 2 1294 | data3_1194 data3_994 0 0 1 2 1295 | data3_1195 data3_995 0 0 1 2 1296 | data3_1196 data3_996 0 0 2 2 1297 | data3_1197 data3_997 0 0 1 2 1298 | data3_1198 data3_998 0 0 2 2 1299 | data3_1199 data3_999 0 0 1 2 1300 | data3_1200 data3_1000 0 0 1 2 1301 | data4_1301 data4_1 0 0 1 1 1302 | data4_1302 data4_2 0 0 2 1 1303 | data4_1303 data4_3 0 0 1 1 1304 | data4_1304 data4_4 0 0 2 1 1305 | data4_1305 data4_5 0 0 1 1 1306 | data4_1306 data4_6 0 0 2 1 1307 | data4_1307 data4_7 0 0 1 1 1308 | data4_1308 data4_8 0 0 2 1 1309 | data4_1309 data4_9 0 0 2 1 1310 | data4_1310 data4_10 0 0 2 1 1311 | data4_1311 data4_11 0 0 2 1 1312 | data4_1312 data4_12 0 0 1 1 1313 | data4_1313 data4_13 0 0 2 1 1314 | data4_1314 data4_14 0 0 1 1 1315 | data4_1315 data4_15 0 0 1 1 1316 | data4_1316 data4_16 0 0 2 1 1317 | data4_1317 data4_17 0 0 1 1 1318 | data4_1318 data4_18 0 0 1 1 1319 | data4_1319 data4_19 0 0 2 1 1320 | data4_1320 data4_20 0 0 1 2 1321 | data4_1321 data4_21 0 0 1 1 1322 | data4_1322 data4_22 0 0 1 2 1323 | data4_1323 data4_23 0 0 1 2 1324 | data4_1324 data4_24 0 0 2 1 1325 | data4_1325 data4_25 0 0 1 2 1326 | data4_1326 data4_26 0 0 1 1 1327 | data4_1327 data4_27 0 0 2 1 1328 | data4_1328 data4_28 0 0 1 2 1329 | data4_1329 data4_29 0 0 2 1 1330 | data4_1330 data4_30 0 0 1 1 1331 | data4_1331 data4_31 0 0 1 2 1332 | data4_1332 data4_32 0 0 2 1 1333 | data4_1333 data4_33 0 0 1 1 1334 | data4_1334 data4_34 0 0 1 2 1335 | data4_1335 data4_35 0 0 1 2 1336 | data4_1336 data4_36 0 0 1 1 1337 | data4_1337 data4_37 0 0 2 1 1338 | data4_1338 data4_38 0 0 2 1 1339 | data4_1339 data4_39 0 0 2 1 1340 | data4_1340 data4_40 0 0 2 1 1341 | data4_1341 data4_41 0 0 1 1 1342 | data4_1342 data4_42 0 0 1 2 1343 | data4_1343 data4_43 0 0 1 1 1344 | data4_1344 data4_44 0 0 2 1 1345 | data4_1345 data4_45 0 0 1 1 1346 | data4_1346 data4_46 0 0 1 2 1347 | data4_1347 data4_47 0 0 1 2 1348 | data4_1348 data4_48 0 0 2 1 1349 | data4_1349 data4_49 0 0 1 2 1350 | data4_1350 data4_50 0 0 1 2 1351 | data4_1351 data4_51 0 0 1 1 1352 | data4_1352 data4_52 0 0 1 2 1353 | data4_1353 data4_53 0 0 1 2 1354 | data4_1354 data4_54 0 0 1 1 1355 | data4_1355 data4_55 0 0 1 1 1356 | data4_1356 data4_56 0 0 2 1 1357 | data4_1357 data4_57 0 0 2 1 1358 | data4_1358 data4_58 0 0 2 1 1359 | data4_1359 data4_59 0 0 2 1 1360 | data4_1360 data4_60 0 0 2 1 1361 | data4_1361 data4_61 0 0 2 1 1362 | data4_1362 data4_62 0 0 2 1 1363 | data4_1363 data4_63 0 0 1 1 1364 | data4_1364 data4_64 0 0 2 1 1365 | data4_1365 data4_65 0 0 2 1 1366 | data4_1366 data4_66 0 0 2 1 1367 | data4_1367 data4_67 0 0 1 1 1368 | data4_1368 data4_68 0 0 1 1 1369 | data4_1369 data4_69 0 0 2 1 1370 | data4_1370 data4_70 0 0 2 1 1371 | data4_1371 data4_71 0 0 1 2 1372 | data4_1372 data4_72 0 0 1 1 1373 | data4_1373 data4_73 0 0 1 1 1374 | data4_1374 data4_74 0 0 1 1 1375 | data4_1375 data4_75 0 0 2 1 1376 | data4_1376 data4_76 0 0 2 1 1377 | data4_1377 data4_77 0 0 1 1 1378 | data4_1378 data4_78 0 0 2 1 1379 | data4_1379 data4_79 0 0 2 1 1380 | data4_1380 data4_80 0 0 2 1 1381 | data4_1381 data4_81 0 0 1 1 1382 | data4_1382 data4_82 0 0 1 1 1383 | data4_1383 data4_83 0 0 1 1 1384 | data4_1384 data4_84 0 0 2 1 1385 | data4_1385 data4_85 0 0 1 2 1386 | data4_1386 data4_86 0 0 1 2 1387 | data4_1387 data4_87 0 0 2 1 1388 | data4_1388 data4_88 0 0 1 1 1389 | data4_1389 data4_89 0 0 1 1 1390 | data4_1390 data4_90 0 0 2 1 1391 | data4_1391 data4_91 0 0 1 1 1392 | data4_1392 data4_92 0 0 2 1 1393 | data4_1393 data4_93 0 0 2 2 1394 | data4_1394 data4_94 0 0 1 1 1395 | data4_1395 data4_95 0 0 1 2 1396 | data4_1396 data4_96 0 0 1 2 1397 | data4_1397 data4_97 0 0 1 2 1398 | data4_1398 data4_98 0 0 1 1 1399 | data4_1399 data4_99 0 0 1 1 1400 | data4_1400 data4_100 0 0 2 1 1401 | data4_1401 data4_101 0 0 2 1 1402 | data4_1402 data4_102 0 0 2 1 1403 | data4_1403 data4_103 0 0 1 1 1404 | data4_1404 data4_104 0 0 1 2 1405 | data4_1405 data4_105 0 0 1 1 1406 | data4_1406 data4_106 0 0 1 2 1407 | data4_1407 data4_107 0 0 1 2 1408 | data4_1408 data4_108 0 0 2 1 1409 | data4_1409 data4_109 0 0 1 1 1410 | data4_1410 data4_110 0 0 1 2 1411 | data4_1411 data4_111 0 0 1 1 1412 | data4_1412 data4_112 0 0 2 1 1413 | data4_1413 data4_113 0 0 1 1 1414 | data4_1414 data4_114 0 0 1 2 1415 | data4_1415 data4_115 0 0 2 1 1416 | data4_1416 data4_116 0 0 1 1 1417 | data4_1417 data4_117 0 0 2 2 1418 | data4_1418 data4_118 0 0 1 2 1419 | data4_1419 data4_119 0 0 2 1 1420 | data4_1420 data4_120 0 0 2 1 1421 | data4_1421 data4_121 0 0 1 1 1422 | data4_1422 data4_122 0 0 1 1 1423 | data4_1423 data4_123 0 0 2 1 1424 | data4_1424 data4_124 0 0 2 1 1425 | data4_1425 data4_125 0 0 2 2 1426 | data4_1426 data4_126 0 0 1 1 1427 | data4_1427 data4_127 0 0 2 1 1428 | data4_1428 data4_128 0 0 2 1 1429 | data4_1429 data4_129 0 0 2 2 1430 | data4_1430 data4_130 0 0 1 1 1431 | data4_1431 data4_131 0 0 1 2 1432 | data4_1432 data4_132 0 0 1 1 1433 | data4_1433 data4_133 0 0 1 2 1434 | data4_1434 data4_134 0 0 2 1 1435 | data4_1435 data4_135 0 0 2 2 1436 | data4_1436 data4_136 0 0 1 2 1437 | data4_1437 data4_137 0 0 1 1 1438 | data4_1438 data4_138 0 0 1 1 1439 | data4_1439 data4_139 0 0 1 1 1440 | data4_1440 data4_140 0 0 1 2 1441 | data4_1441 data4_141 0 0 1 1 1442 | data4_1442 data4_142 0 0 1 1 1443 | data4_1443 data4_143 0 0 1 1 1444 | data4_1444 data4_144 0 0 1 1 1445 | data4_1445 data4_145 0 0 1 2 1446 | data4_1446 data4_146 0 0 1 2 1447 | data4_1447 data4_147 0 0 2 2 1448 | data4_1448 data4_148 0 0 2 2 1449 | data4_1449 data4_149 0 0 1 2 1450 | data4_1450 data4_150 0 0 1 2 1451 | data4_1451 data4_151 0 0 2 1 1452 | data4_1452 data4_152 0 0 2 2 1453 | data4_1453 data4_153 0 0 2 2 1454 | data4_1454 data4_154 0 0 1 1 1455 | data4_1455 data4_155 0 0 2 2 1456 | data4_1456 data4_156 0 0 1 1 1457 | data4_1457 data4_157 0 0 1 2 1458 | data4_1458 data4_158 0 0 1 1 1459 | data4_1459 data4_159 0 0 1 1 1460 | data4_1460 data4_160 0 0 1 1 1461 | data4_1461 data4_161 0 0 1 1 1462 | data4_1462 data4_162 0 0 1 1 1463 | data4_1463 data4_163 0 0 1 2 1464 | data4_1464 data4_164 0 0 1 1 1465 | data4_1465 data4_165 0 0 1 2 1466 | data4_1466 data4_166 0 0 2 1 1467 | data4_1467 data4_167 0 0 2 1 1468 | data4_1468 data4_168 0 0 2 1 1469 | data4_1469 data4_169 0 0 2 1 1470 | data4_1470 data4_170 0 0 2 1 1471 | data4_1471 data4_171 0 0 1 2 1472 | data4_1472 data4_172 0 0 2 1 1473 | data4_1473 data4_173 0 0 2 1 1474 | data4_1474 data4_174 0 0 2 1 1475 | data4_1475 data4_175 0 0 2 1 1476 | data4_1476 data4_176 0 0 1 2 1477 | data4_1477 data4_177 0 0 2 1 1478 | data4_1478 data4_178 0 0 2 2 1479 | data4_1479 data4_179 0 0 1 2 1480 | data4_1480 data4_180 0 0 1 2 1481 | data4_1481 data4_181 0 0 1 2 1482 | data4_1482 data4_182 0 0 1 2 1483 | data4_1483 data4_183 0 0 1 2 1484 | data4_1484 data4_184 0 0 1 2 1485 | data4_1485 data4_185 0 0 2 1 1486 | data4_1486 data4_186 0 0 1 2 1487 | data4_1487 data4_187 0 0 1 2 1488 | data4_1488 data4_188 0 0 1 2 1489 | data4_1489 data4_189 0 0 1 2 1490 | data4_1490 data4_190 0 0 2 1 1491 | data4_1491 data4_191 0 0 1 2 1492 | data4_1492 data4_192 0 0 2 2 1493 | data4_1493 data4_193 0 0 1 2 1494 | data4_1494 data4_194 0 0 1 1 1495 | data4_1495 data4_195 0 0 2 2 1496 | data4_1496 data4_196 0 0 1 1 1497 | data4_1497 data4_197 0 0 1 1 1498 | data4_1498 data4_198 0 0 1 1 1499 | data4_1499 data4_199 0 0 1 1 1500 | data4_1500 data4_200 0 0 1 2 1501 | data4_1501 data4_201 0 0 2 1 1502 | data4_1502 data4_202 0 0 2 1 1503 | data4_1503 data4_203 0 0 2 1 1504 | data4_1504 data4_204 0 0 2 2 1505 | data4_1505 data4_205 0 0 2 1 1506 | data4_1506 data4_206 0 0 2 1 1507 | data4_1507 data4_207 0 0 1 1 1508 | data4_1508 data4_208 0 0 2 2 1509 | data4_1509 data4_209 0 0 2 1 1510 | data4_1510 data4_210 0 0 1 2 1511 | data4_1511 data4_211 0 0 2 2 1512 | data4_1512 data4_212 0 0 2 1 1513 | data4_1513 data4_213 0 0 2 1 1514 | data4_1514 data4_214 0 0 2 1 1515 | data4_1515 data4_215 0 0 2 1 1516 | data4_1516 data4_216 0 0 2 1 1517 | data4_1517 data4_217 0 0 2 1 1518 | data4_1518 data4_218 0 0 2 1 1519 | data4_1519 data4_219 0 0 2 1 1520 | data4_1520 data4_220 0 0 1 1 1521 | data4_1521 data4_221 0 0 2 1 1522 | data4_1522 data4_222 0 0 2 2 1523 | data4_1523 data4_223 0 0 1 2 1524 | data4_1524 data4_224 0 0 2 2 1525 | data4_1525 data4_225 0 0 1 2 1526 | data4_1526 data4_226 0 0 1 2 1527 | data4_1527 data4_227 0 0 2 1 1528 | data4_1528 data4_228 0 0 1 2 1529 | data4_1529 data4_229 0 0 1 2 1530 | data4_1530 data4_230 0 0 1 1 1531 | data4_1531 data4_231 0 0 2 2 1532 | data4_1532 data4_232 0 0 1 1 1533 | data4_1533 data4_233 0 0 1 2 1534 | data4_1534 data4_234 0 0 1 2 1535 | data4_1535 data4_235 0 0 1 2 1536 | data4_1536 data4_236 0 0 1 2 1537 | data4_1537 data4_237 0 0 1 1 1538 | data4_1538 data4_238 0 0 2 2 1539 | data4_1539 data4_239 0 0 2 2 1540 | data4_1540 data4_240 0 0 1 2 1541 | data4_1541 data4_241 0 0 1 2 1542 | data4_1542 data4_242 0 0 1 1 1543 | data4_1543 data4_243 0 0 1 1 1544 | data4_1544 data4_244 0 0 2 1 1545 | data4_1545 data4_245 0 0 2 1 1546 | data4_1546 data4_246 0 0 1 1 1547 | data4_1547 data4_247 0 0 2 1 1548 | data4_1548 data4_248 0 0 2 2 1549 | data4_1549 data4_249 0 0 1 2 1550 | data4_1550 data4_250 0 0 1 2 1551 | data4_1551 data4_251 0 0 1 2 1552 | data4_1552 data4_252 0 0 1 1 1553 | data4_1553 data4_253 0 0 1 2 1554 | data4_1554 data4_254 0 0 1 2 1555 | data4_1555 data4_255 0 0 2 2 1556 | data4_1556 data4_256 0 0 1 2 1557 | data4_1557 data4_257 0 0 2 1 1558 | data4_1558 data4_258 0 0 1 2 1559 | data4_1559 data4_259 0 0 1 1 1560 | data4_1560 data4_260 0 0 1 2 1561 | data4_1561 data4_261 0 0 1 2 1562 | data4_1562 data4_262 0 0 2 2 1563 | data4_1563 data4_263 0 0 2 2 1564 | data4_1564 data4_264 0 0 1 2 1565 | data4_1565 data4_265 0 0 2 2 1566 | data4_1566 data4_266 0 0 2 2 1567 | data4_1567 data4_267 0 0 1 2 1568 | data4_1568 data4_268 0 0 1 1 1569 | data4_1569 data4_269 0 0 1 1 1570 | data4_1570 data4_270 0 0 1 2 1571 | data4_1571 data4_271 0 0 2 2 1572 | data4_1572 data4_272 0 0 1 2 1573 | data4_1573 data4_273 0 0 1 2 1574 | data4_1574 data4_274 0 0 1 1 1575 | data4_1575 data4_275 0 0 2 1 1576 | data4_1576 data4_276 0 0 1 2 1577 | data4_1577 data4_277 0 0 2 2 1578 | data4_1578 data4_278 0 0 1 2 1579 | data4_1579 data4_279 0 0 2 1 1580 | data4_1580 data4_280 0 0 1 2 1581 | data4_1581 data4_281 0 0 1 2 1582 | data4_1582 data4_282 0 0 2 1 1583 | data4_1583 data4_283 0 0 2 1 1584 | data4_1584 data4_284 0 0 1 2 1585 | data4_1585 data4_285 0 0 1 2 1586 | data4_1586 data4_286 0 0 1 2 1587 | data4_1587 data4_287 0 0 1 2 1588 | data4_1588 data4_288 0 0 2 1 1589 | data4_1589 data4_289 0 0 1 2 1590 | data4_1590 data4_290 0 0 1 2 1591 | data4_1591 data4_291 0 0 1 2 1592 | data4_1592 data4_292 0 0 1 1 1593 | data4_1593 data4_293 0 0 1 2 1594 | data4_1594 data4_294 0 0 2 1 1595 | data4_1595 data4_295 0 0 2 2 1596 | data4_1596 data4_296 0 0 1 2 1597 | data4_1597 data4_297 0 0 2 1 1598 | data4_1598 data4_298 0 0 1 1 1599 | data4_1599 data4_299 0 0 2 1 1600 | data4_1600 data4_300 0 0 2 1 1601 | data4_1601 data4_301 0 0 2 1 1602 | data4_1602 data4_302 0 0 2 1 1603 | data4_1603 data4_303 0 0 2 1 1604 | data4_1604 data4_304 0 0 1 1 1605 | data4_1605 data4_305 0 0 2 1 1606 | data4_1606 data4_306 0 0 2 1 1607 | data4_1607 data4_307 0 0 2 1 1608 | data4_1608 data4_308 0 0 1 1 1609 | data4_1609 data4_309 0 0 1 1 1610 | data4_1610 data4_310 0 0 2 1 1611 | data4_1611 data4_311 0 0 1 1 1612 | data4_1612 data4_312 0 0 1 1 1613 | data4_1613 data4_313 0 0 1 1 1614 | data4_1614 data4_314 0 0 2 1 1615 | data4_1615 data4_315 0 0 2 1 1616 | data4_1616 data4_316 0 0 1 2 1617 | data4_1617 data4_317 0 0 1 1 1618 | data4_1618 data4_318 0 0 2 1 1619 | data4_1619 data4_319 0 0 2 2 1620 | data4_1620 data4_320 0 0 2 1 1621 | data4_1621 data4_321 0 0 2 1 1622 | data4_1622 data4_322 0 0 2 1 1623 | data4_1623 data4_323 0 0 1 1 1624 | data4_1624 data4_324 0 0 1 1 1625 | data4_1625 data4_325 0 0 1 1 1626 | data4_1626 data4_326 0 0 2 1 1627 | data4_1627 data4_327 0 0 1 1 1628 | data4_1628 data4_328 0 0 1 1 1629 | data4_1629 data4_329 0 0 1 1 1630 | data4_1630 data4_330 0 0 2 1 1631 | data4_1631 data4_331 0 0 1 1 1632 | data4_1632 data4_332 0 0 2 1 1633 | data4_1633 data4_333 0 0 1 1 1634 | data4_1634 data4_334 0 0 2 1 1635 | data4_1635 data4_335 0 0 2 1 1636 | data4_1636 data4_336 0 0 2 1 1637 | data4_1637 data4_337 0 0 2 1 1638 | data4_1638 data4_338 0 0 1 1 1639 | data4_1639 data4_339 0 0 2 1 1640 | data4_1640 data4_340 0 0 2 1 1641 | data4_1641 data4_341 0 0 2 1 1642 | data4_1642 data4_342 0 0 2 1 1643 | data4_1643 data4_343 0 0 1 1 1644 | data4_1644 data4_344 0 0 2 2 1645 | data4_1645 data4_345 0 0 1 1 1646 | data4_1646 data4_346 0 0 2 1 1647 | data4_1647 data4_347 0 0 2 1 1648 | data4_1648 data4_348 0 0 1 1 1649 | data4_1649 data4_349 0 0 2 1 1650 | data4_1650 data4_350 0 0 1 1 1651 | data4_1651 data4_351 0 0 1 2 1652 | data4_1652 data4_352 0 0 1 1 1653 | data4_1653 data4_353 0 0 2 1 1654 | data4_1654 data4_354 0 0 2 1 1655 | data4_1655 data4_355 0 0 2 1 1656 | data4_1656 data4_356 0 0 1 2 1657 | data4_1657 data4_357 0 0 1 1 1658 | data4_1658 data4_358 0 0 1 2 1659 | data4_1659 data4_359 0 0 1 2 1660 | data4_1660 data4_360 0 0 1 2 1661 | data4_1661 data4_361 0 0 1 2 1662 | data4_1662 data4_362 0 0 2 1 1663 | data4_1663 data4_363 0 0 2 1 1664 | data4_1664 data4_364 0 0 1 1 1665 | data4_1665 data4_365 0 0 2 1 1666 | data4_1666 data4_366 0 0 1 1 1667 | data4_1667 data4_367 0 0 2 2 1668 | data4_1668 data4_368 0 0 1 1 1669 | data4_1669 data4_369 0 0 2 1 1670 | data4_1670 data4_370 0 0 1 1 1671 | data4_1671 data4_371 0 0 2 2 1672 | data4_1672 data4_372 0 0 1 2 1673 | data4_1673 data4_373 0 0 2 1 1674 | data4_1674 data4_374 0 0 2 1 1675 | data4_1675 data4_375 0 0 1 2 1676 | data4_1676 data4_376 0 0 1 1 1677 | data4_1677 data4_377 0 0 1 1 1678 | data4_1678 data4_378 0 0 2 1 1679 | data4_1679 data4_379 0 0 2 1 1680 | data4_1680 data4_380 0 0 1 1 1681 | data4_1681 data4_381 0 0 1 1 1682 | data4_1682 data4_382 0 0 2 1 1683 | data4_1683 data4_383 0 0 2 1 1684 | data4_1684 data4_384 0 0 1 1 1685 | data4_1685 data4_385 0 0 1 1 1686 | data4_1686 data4_386 0 0 2 2 1687 | data4_1687 data4_387 0 0 1 2 1688 | data4_1688 data4_388 0 0 2 1 1689 | data4_1689 data4_389 0 0 2 1 1690 | data4_1690 data4_390 0 0 2 1 1691 | data4_1691 data4_391 0 0 1 1 1692 | data4_1692 data4_392 0 0 1 2 1693 | data4_1693 data4_393 0 0 1 1 1694 | data4_1694 data4_394 0 0 2 2 1695 | data4_1695 data4_395 0 0 1 2 1696 | data4_1696 data4_396 0 0 2 1 1697 | data4_1697 data4_397 0 0 1 1 1698 | data4_1698 data4_398 0 0 2 1 1699 | data4_1699 data4_399 0 0 2 1 1700 | data4_1700 data4_400 0 0 2 1 1701 | data4_1701 data4_401 0 0 2 1 1702 | data4_1702 data4_402 0 0 2 1 1703 | data4_1703 data4_403 0 0 2 1 1704 | data4_1704 data4_404 0 0 2 1 1705 | data4_1705 data4_405 0 0 1 1 1706 | data4_1706 data4_406 0 0 1 1 1707 | data4_1707 data4_407 0 0 1 1 1708 | data4_1708 data4_408 0 0 2 1 1709 | data4_1709 data4_409 0 0 1 1 1710 | data4_1710 data4_410 0 0 1 1 1711 | data4_1711 data4_411 0 0 1 1 1712 | data4_1712 data4_412 0 0 1 1 1713 | data4_1713 data4_413 0 0 2 1 1714 | data4_1714 data4_414 0 0 1 1 1715 | data4_1715 data4_415 0 0 2 1 1716 | data4_1716 data4_416 0 0 1 1 1717 | data4_1717 data4_417 0 0 2 1 1718 | data4_1718 data4_418 0 0 2 1 1719 | data4_1719 data4_419 0 0 1 1 1720 | data4_1720 data4_420 0 0 1 1 1721 | data4_1721 data4_421 0 0 2 1 1722 | data4_1722 data4_422 0 0 1 1 1723 | data4_1723 data4_423 0 0 2 1 1724 | data4_1724 data4_424 0 0 1 1 1725 | data4_1725 data4_425 0 0 2 1 1726 | data4_1726 data4_426 0 0 2 1 1727 | data4_1727 data4_427 0 0 1 1 1728 | data4_1728 data4_428 0 0 2 1 1729 | data4_1729 data4_429 0 0 1 1 1730 | data4_1730 data4_430 0 0 1 1 1731 | data4_1731 data4_431 0 0 1 1 1732 | data4_1732 data4_432 0 0 2 1 1733 | data4_1733 data4_433 0 0 2 1 1734 | data4_1734 data4_434 0 0 2 1 1735 | data4_1735 data4_435 0 0 2 1 1736 | data4_1736 data4_436 0 0 2 1 1737 | data4_1737 data4_437 0 0 1 1 1738 | data4_1738 data4_438 0 0 1 1 1739 | data4_1739 data4_439 0 0 1 1 1740 | data4_1740 data4_440 0 0 2 1 1741 | data4_1741 data4_441 0 0 2 1 1742 | data4_1742 data4_442 0 0 1 1 1743 | data4_1743 data4_443 0 0 2 1 1744 | data4_1744 data4_444 0 0 2 1 1745 | data4_1745 data4_445 0 0 1 2 1746 | data4_1746 data4_446 0 0 2 1 1747 | data4_1747 data4_447 0 0 2 1 1748 | data4_1748 data4_448 0 0 2 1 1749 | data4_1749 data4_449 0 0 2 2 1750 | data4_1750 data4_450 0 0 1 2 1751 | data4_1751 data4_451 0 0 2 2 1752 | data4_1752 data4_452 0 0 2 2 1753 | data4_1753 data4_453 0 0 1 1 1754 | data4_1754 data4_454 0 0 2 2 1755 | data4_1755 data4_455 0 0 1 2 1756 | data4_1756 data4_456 0 0 1 2 1757 | data4_1757 data4_457 0 0 1 1 1758 | data4_1758 data4_458 0 0 1 1 1759 | data4_1759 data4_459 0 0 1 1 1760 | data4_1760 data4_460 0 0 1 1 1761 | data4_1761 data4_461 0 0 1 1 1762 | data4_1762 data4_462 0 0 2 1 1763 | data4_1763 data4_463 0 0 1 1 1764 | data4_1764 data4_464 0 0 1 1 1765 | data4_1765 data4_465 0 0 1 2 1766 | data4_1766 data4_466 0 0 1 1 1767 | data4_1767 data4_467 0 0 2 1 1768 | data4_1768 data4_468 0 0 2 1 1769 | data4_1769 data4_469 0 0 2 1 1770 | data4_1770 data4_470 0 0 1 1 1771 | data4_1771 data4_471 0 0 1 1 1772 | data4_1772 data4_472 0 0 1 1 1773 | data4_1773 data4_473 0 0 1 1 1774 | data4_1774 data4_474 0 0 2 2 1775 | data4_1775 data4_475 0 0 2 1 1776 | data4_1776 data4_476 0 0 1 1 1777 | data4_1777 data4_477 0 0 1 1 1778 | data4_1778 data4_478 0 0 2 1 1779 | data4_1779 data4_479 0 0 2 1 1780 | data4_1780 data4_480 0 0 1 1 1781 | data4_1781 data4_481 0 0 1 1 1782 | data4_1782 data4_482 0 0 2 1 1783 | data4_1783 data4_483 0 0 1 1 1784 | data4_1784 data4_484 0 0 2 1 1785 | data4_1785 data4_485 0 0 1 1 1786 | data4_1786 data4_486 0 0 1 1 1787 | data4_1787 data4_487 0 0 2 1 1788 | data4_1788 data4_488 0 0 2 1 1789 | data4_1789 data4_489 0 0 2 1 1790 | data4_1790 data4_490 0 0 1 2 1791 | data4_1791 data4_491 0 0 1 1 1792 | data4_1792 data4_492 0 0 2 1 1793 | data4_1793 data4_493 0 0 1 1 1794 | data4_1794 data4_494 0 0 1 2 1795 | data4_1795 data4_495 0 0 2 1 1796 | data4_1796 data4_496 0 0 2 1 1797 | data4_1797 data4_497 0 0 1 1 1798 | data4_1798 data4_498 0 0 2 1 1799 | data4_1799 data4_499 0 0 2 1 1800 | data4_1800 data4_500 0 0 1 1 1801 | data4_1801 data4_501 0 0 2 1 1802 | data4_1802 data4_502 0 0 2 1 1803 | data4_1803 data4_503 0 0 2 1 1804 | data4_1804 data4_504 0 0 1 1 1805 | data4_1805 data4_505 0 0 2 1 1806 | data4_1806 data4_506 0 0 1 1 1807 | data4_1807 data4_507 0 0 1 1 1808 | data4_1808 data4_508 0 0 2 1 1809 | data4_1809 data4_509 0 0 1 1 1810 | data4_1810 data4_510 0 0 2 1 1811 | data4_1811 data4_511 0 0 1 1 1812 | data4_1812 data4_512 0 0 2 1 1813 | data4_1813 data4_513 0 0 1 1 1814 | data4_1814 data4_514 0 0 2 1 1815 | data4_1815 data4_515 0 0 2 1 1816 | data4_1816 data4_516 0 0 1 1 1817 | data4_1817 data4_517 0 0 1 1 1818 | data4_1818 data4_518 0 0 1 1 1819 | data4_1819 data4_519 0 0 2 1 1820 | data4_1820 data4_520 0 0 2 1 1821 | data4_1821 data4_521 0 0 2 1 1822 | data4_1822 data4_522 0 0 2 1 1823 | data4_1823 data4_523 0 0 2 1 1824 | data4_1824 data4_524 0 0 2 1 1825 | data4_1825 data4_525 0 0 1 1 1826 | data4_1826 data4_526 0 0 2 1 1827 | data4_1827 data4_527 0 0 1 1 1828 | data4_1828 data4_528 0 0 1 1 1829 | data4_1829 data4_529 0 0 2 1 1830 | data4_1830 data4_530 0 0 2 1 1831 | data4_1831 data4_531 0 0 1 1 1832 | data4_1832 data4_532 0 0 1 1 1833 | data4_1833 data4_533 0 0 2 1 1834 | data4_1834 data4_534 0 0 2 1 1835 | data4_1835 data4_535 0 0 2 1 1836 | data4_1836 data4_536 0 0 1 1 1837 | data4_1837 data4_537 0 0 2 1 1838 | data4_1838 data4_538 0 0 2 1 1839 | data4_1839 data4_539 0 0 2 1 1840 | data4_1840 data4_540 0 0 2 1 1841 | data4_1841 data4_541 0 0 2 1 1842 | data4_1842 data4_542 0 0 1 1 1843 | data4_1843 data4_543 0 0 2 1 1844 | data4_1844 data4_544 0 0 2 1 1845 | data4_1845 data4_545 0 0 1 1 1846 | data4_1846 data4_546 0 0 1 1 1847 | data4_1847 data4_547 0 0 1 1 1848 | data4_1848 data4_548 0 0 1 1 1849 | data4_1849 data4_549 0 0 2 1 1850 | data4_1850 data4_550 0 0 1 1 1851 | data4_1851 data4_551 0 0 1 1 1852 | data4_1852 data4_552 0 0 2 1 1853 | data4_1853 data4_553 0 0 1 1 1854 | data4_1854 data4_554 0 0 2 1 1855 | data4_1855 data4_555 0 0 2 1 1856 | data4_1856 data4_556 0 0 1 1 1857 | data4_1857 data4_557 0 0 2 1 1858 | data4_1858 data4_558 0 0 1 1 1859 | data4_1859 data4_559 0 0 1 1 1860 | data4_1860 data4_560 0 0 1 1 1861 | data4_1861 data4_561 0 0 1 1 1862 | data4_1862 data4_562 0 0 1 1 1863 | data4_1863 data4_563 0 0 1 1 1864 | data4_1864 data4_564 0 0 2 1 1865 | data4_1865 data4_565 0 0 1 1 1866 | data4_1866 data4_566 0 0 2 1 1867 | data4_1867 data4_567 0 0 1 1 1868 | data4_1868 data4_568 0 0 1 1 1869 | data4_1869 data4_569 0 0 2 1 1870 | data4_1870 data4_570 0 0 2 1 1871 | data4_1871 data4_571 0 0 2 1 1872 | data4_1872 data4_572 0 0 1 1 1873 | data4_1873 data4_573 0 0 1 1 1874 | data4_1874 data4_574 0 0 2 1 1875 | data4_1875 data4_575 0 0 2 2 1876 | data4_1876 data4_576 0 0 1 1 1877 | data4_1877 data4_577 0 0 1 1 1878 | data4_1878 data4_578 0 0 2 1 1879 | data4_1879 data4_579 0 0 1 1 1880 | data4_1880 data4_580 0 0 2 1 1881 | data4_1881 data4_581 0 0 2 1 1882 | data4_1882 data4_582 0 0 2 1 1883 | data4_1883 data4_583 0 0 1 1 1884 | data4_1884 data4_584 0 0 1 1 1885 | data4_1885 data4_585 0 0 1 2 1886 | data4_1886 data4_586 0 0 2 1 1887 | data4_1887 data4_587 0 0 1 1 1888 | data4_1888 data4_588 0 0 2 1 1889 | data4_1889 data4_589 0 0 2 1 1890 | data4_1890 data4_590 0 0 2 1 1891 | data4_1891 data4_591 0 0 2 1 1892 | data4_1892 data4_592 0 0 1 1 1893 | data4_1893 data4_593 0 0 1 1 1894 | data4_1894 data4_594 0 0 2 1 1895 | data4_1895 data4_595 0 0 1 2 1896 | data4_1896 data4_596 0 0 1 2 1897 | data4_1897 data4_597 0 0 1 1 1898 | data4_1898 data4_598 0 0 1 1 1899 | data4_1899 data4_599 0 0 2 1 1900 | data4_1900 data4_600 0 0 2 1 1901 | data4_1901 data4_601 0 0 2 1 1902 | data4_1902 data4_602 0 0 2 1 1903 | data4_1903 data4_603 0 0 1 1 1904 | data4_1904 data4_604 0 0 1 1 1905 | data4_1905 data4_605 0 0 1 1 1906 | data4_1906 data4_606 0 0 1 1 1907 | data4_1907 data4_607 0 0 1 1 1908 | data4_1908 data4_608 0 0 2 1 1909 | data4_1909 data4_609 0 0 1 1 1910 | data4_1910 data4_610 0 0 2 1 1911 | data4_1911 data4_611 0 0 1 1 1912 | data4_1912 data4_612 0 0 1 1 1913 | data4_1913 data4_613 0 0 1 2 1914 | data4_1914 data4_614 0 0 1 1 1915 | data4_1915 data4_615 0 0 1 1 1916 | data4_1916 data4_616 0 0 2 1 1917 | data4_1917 data4_617 0 0 2 1 1918 | data4_1918 data4_618 0 0 2 1 1919 | data4_1919 data4_619 0 0 1 1 1920 | data4_1920 data4_620 0 0 1 1 1921 | data4_1921 data4_621 0 0 2 1 1922 | data4_1922 data4_622 0 0 2 1 1923 | data4_1923 data4_623 0 0 1 1 1924 | data4_1924 data4_624 0 0 2 1 1925 | data4_1925 data4_625 0 0 2 1 1926 | data4_1926 data4_626 0 0 1 2 1927 | data4_1927 data4_627 0 0 1 1 1928 | data4_1928 data4_628 0 0 1 1 1929 | data4_1929 data4_629 0 0 2 1 1930 | data4_1930 data4_630 0 0 1 2 1931 | data4_1931 data4_631 0 0 1 2 1932 | data4_1932 data4_632 0 0 2 1 1933 | data4_1933 data4_633 0 0 1 1 1934 | data4_1934 data4_634 0 0 2 1 1935 | data4_1935 data4_635 0 0 1 1 1936 | data4_1936 data4_636 0 0 1 1 1937 | data4_1937 data4_637 0 0 1 2 1938 | data4_1938 data4_638 0 0 1 1 1939 | data4_1939 data4_639 0 0 1 1 1940 | data4_1940 data4_640 0 0 1 2 1941 | data4_1941 data4_641 0 0 1 2 1942 | data4_1942 data4_642 0 0 2 2 1943 | data4_1943 data4_643 0 0 1 1 1944 | data4_1944 data4_644 0 0 2 1 1945 | data4_1945 data4_645 0 0 1 2 1946 | data4_1946 data4_646 0 0 1 2 1947 | data4_1947 data4_647 0 0 2 1 1948 | data4_1948 data4_648 0 0 2 1 1949 | data4_1949 data4_649 0 0 1 1 1950 | data4_1950 data4_650 0 0 1 1 1951 | data4_1951 data4_651 0 0 1 1 1952 | data4_1952 data4_652 0 0 1 1 1953 | data4_1953 data4_653 0 0 2 1 1954 | data4_1954 data4_654 0 0 1 2 1955 | data4_1955 data4_655 0 0 1 1 1956 | data4_1956 data4_656 0 0 1 1 1957 | data4_1957 data4_657 0 0 1 1 1958 | data4_1958 data4_658 0 0 1 1 1959 | data4_1959 data4_659 0 0 1 1 1960 | data4_1960 data4_660 0 0 1 1 1961 | data4_1961 data4_661 0 0 1 1 1962 | data4_1962 data4_662 0 0 2 1 1963 | data4_1963 data4_663 0 0 1 1 1964 | data4_1964 data4_664 0 0 2 1 1965 | data4_1965 data4_665 0 0 2 1 1966 | data4_1966 data4_666 0 0 2 1 1967 | data4_1967 data4_667 0 0 2 1 1968 | data4_1968 data4_668 0 0 1 1 1969 | data4_1969 data4_669 0 0 2 1 1970 | data4_1970 data4_670 0 0 2 1 1971 | data4_1971 data4_671 0 0 1 1 1972 | data4_1972 data4_672 0 0 1 1 1973 | data4_1973 data4_673 0 0 1 1 1974 | data4_1974 data4_674 0 0 1 2 1975 | data4_1975 data4_675 0 0 1 1 1976 | data4_1976 data4_676 0 0 2 1 1977 | data4_1977 data4_677 0 0 1 2 1978 | data4_1978 data4_678 0 0 2 1 1979 | data4_1979 data4_679 0 0 1 2 1980 | data4_1980 data4_680 0 0 2 1 1981 | data4_1981 data4_681 0 0 1 1 1982 | data4_1982 data4_682 0 0 1 1 1983 | data4_1983 data4_683 0 0 1 1 1984 | data4_1984 data4_684 0 0 1 1 1985 | data4_1985 data4_685 0 0 2 1 1986 | data4_1986 data4_686 0 0 2 1 1987 | data4_1987 data4_687 0 0 2 1 1988 | data4_1988 data4_688 0 0 1 1 1989 | data4_1989 data4_689 0 0 2 1 1990 | data4_1990 data4_690 0 0 2 1 1991 | data4_1991 data4_691 0 0 1 1 1992 | data4_1992 data4_692 0 0 1 2 1993 | data4_1993 data4_693 0 0 2 1 1994 | data4_1994 data4_694 0 0 1 1 1995 | data4_1995 data4_695 0 0 2 1 1996 | data4_1996 data4_696 0 0 2 1 1997 | data4_1997 data4_697 0 0 1 2 1998 | data4_1998 data4_698 0 0 2 1 1999 | data4_1999 data4_699 0 0 2 1 2000 | data4_2000 data4_700 0 0 1 2 2001 | -------------------------------------------------------------------------------- /CNV_data_descriptives.R: -------------------------------------------------------------------------------- 1 | ## CNV_data_descriptives.R 2 | 3 | ## Author: Daniel P. Howrigan (daniel.howrigan@gmail.com) 4 | ## Last Modified: January 2016 5 | 6 | 7 | ## ----- DESCRIPTION: 8 | 9 | ## Interactive R script to examine CNV datasets / Platforms and Principal Components 10 | 11 | ## This script is a short example of dataset properties to investigate potential confounds, limitations, or outliers 12 | 13 | ## Main steps: 14 | ## - Checking case/control balance 15 | ## - Checking CNV burden by dataset / platform 16 | ## - Checking CNV burden by PC 17 | 18 | ## Additional analyses could include: 19 | ## - CNV burden by sex 20 | ## - Splitting CNV burden into autosomes and X chromosome 21 | ## - Splitting into large (more reliably called) and small (less reliably called) CNVs 22 | ## - Plate effects (if available) 23 | ## - CNV metrics (if available) 24 | 25 | 26 | ## ----- REQUIREMENTS: 27 | 28 | ## R and PLINK installed 29 | ## PLINK .cfile: .cnv / .fam / .map file (need to do --cnv-make-map in PLINK if not provided) 30 | ## .phe file with platform/dataset information 31 | ## .cfile and .phe file must have the same name 32 | 33 | 34 | ## ----- SCRIPT SET UP: 35 | 36 | ## PART 1: Checking case/control balance 37 | ## PART 2: Checking CNV burden by dataset / platform 38 | ## PART 2.1: Per-platform boxplot of CNV burden by Case/Control status 39 | ## PART 3: Checking PCs with platform and CNV burden 40 | 41 | 42 | ## ----- NOTES: 43 | 44 | ## Set up a subdirectory to put graphs 45 | 46 | ## This is where I put my graphs on the Broad server - which can be viewed online. Change this line to your specific directory 47 | graph_dir <- '/home/unix/howrigan/public_html/pgc_cnv/github' 48 | 49 | 50 | 51 | ## PART 1: Checking case/control balance 52 | 53 | phe <- read.table('CNV_data.phe',h=T,stringsAsFactors=F) 54 | 55 | ## get case/control count 56 | table(phe$AFF) 57 | 58 | ## get dataset info (strip first character string from FID) 59 | phe$dataset <- sapply(strsplit(phe$FID,'_'),'[',1) 60 | 61 | ## get per-dataset platform info 62 | tapply(phe$dataset,phe$CNV_platform,table) 63 | 64 | ## get per-dataset case/control count 65 | tapply(phe$AFF,phe$dataset,table) 66 | 67 | ## get proportion of controls in each dataset 68 | tapply(phe$AFF,phe$dataset,function(X) {sum(X[X==1])/length(X)} ) 69 | 70 | ## get proportion of controls in each platform 71 | tapply(phe$AFF,phe$CNV_platform,function(X) {sum(X[X==1])/length(X)} ) 72 | 73 | 74 | ## potential issues with case-only dataset in A6.0, but somewhat mitigated by control heavy A6.0 dataset 75 | ## No single platform is well-matched for cases and controls 76 | 77 | 78 | 79 | 80 | 81 | ## PART 2: Checking CNV burden by dataset / platform 82 | 83 | 84 | ## get summary information for CNV_data in PLINK 85 | system('plink --noweb --cfile CNV_data --out CNV_data') 86 | 87 | indiv <- read.table('CNV_data.cnv.indiv',h=T,stringsAsFactors=F) 88 | 89 | ## merge relevant columns with .phe file 90 | phe2 <- merge(phe,indiv[,c('FID','NSEG','KB','KBAVG')],by='FID') 91 | 92 | 93 | ## Does CNV burden vary by platform? 94 | 95 | ## Number of CNV segments 96 | tapply(phe2$NSEG,phe2$CNV_platform,summary) 97 | summary(lm(NSEG ~ as.factor(CNV_platform),data=phe2)) 98 | 99 | ## KB burden 100 | tapply(phe2$KB,phe2$CNV_platform,summary) 101 | summary(lm(KB ~ as.factor(CNV_platform),data=phe2)) 102 | 103 | ## KB length per CNV 104 | tapply(phe2$KBAVG,phe2$CNV_platform,summary) 105 | summary(lm(KBAVG ~ as.factor(CNV_platform),data=phe2)) 106 | 107 | 108 | 109 | 110 | ## PART 2.1: Per-platform boxplot of CNV burden by Case/Control status 111 | 112 | 113 | ## define graphing parameters 114 | nms <- levels(as.factor(phe2$CNV_platform)) 115 | cols <- c('blue','red') 116 | 117 | 118 | ## ==== Graph 119 | pdf(paste(graph_dir,'/Platform_CaseCon_boxplot.pdf',sep=''),height=11,width=8.5) 120 | 121 | par(mfrow=c(3,1)) ## HARD-CODED 122 | 123 | ## NSEG plot 124 | boxplot(phe2$NSEG ~ phe2$AFF:phe2$CNV_platform, 125 | ylab="NSEG", 126 | col=cols, 127 | cex=1, 128 | cex.axis=1) 129 | # legend 130 | legend('topright',legend=c('controls','cases'),fill=c('blue','red'),bty='n',cex=1) 131 | 132 | 133 | ## KB plot 134 | boxplot(phe2$KB ~ phe2$AFF:phe2$CNV_platform, 135 | ylab="KB", 136 | col=cols, 137 | cex=1, 138 | cex.axis=1) 139 | # legend 140 | legend('topright',legend=c('controls','cases'),fill=c('blue','red'),bty='n',cex=1) 141 | 142 | 143 | ## KBAVG plot 144 | boxplot(phe2$KBAVG ~ phe2$AFF:phe2$CNV_platform, 145 | ylab="KBAVG", 146 | col=cols, 147 | cex=1, 148 | cex.axis=1) 149 | # legend 150 | legend('topright',legend=c('controls','cases'),fill=c('blue','red'),bty='n',cex=1) 151 | 152 | 153 | dev.off() 154 | 155 | 156 | 157 | ## PART 3: Checking PCs with platform and CNV burden 158 | 159 | 160 | ## PCs provided in .phe file 161 | pcs <- c('C1','C2','C3','C4','C8') 162 | 163 | 164 | ## Run through each PC to see how CNV platform varies 165 | for(a in 1:length(pcs)) { 166 | cat(pcs[a],'\n\n') 167 | print(eval(parse(text=paste("tapply(phe2$",pcs[a],",phe2$CNV_platform,mean)",sep="")))) 168 | print(eval(parse(text=paste("summary(lm(",pcs[a]," ~ as.factor(CNV_platform),data=phe2))",sep="")))) 169 | cat('\n\n\n\n\n') 170 | } 171 | 172 | ## Run through each PC to see how CNV count (NSEG) varies 173 | for(a in 1:length(pcs)) { 174 | cat(pcs[a],'\n\n') 175 | print(eval(parse(text=paste("summary(lm(",pcs[a]," ~ NSEG,data=phe2))",sep="")))) 176 | cat('\n\n\n\n\n') 177 | } 178 | 179 | ## Run through each PC to see how CNV count (NSEG) varies controlling for platform 180 | for(a in 1:length(pcs)) { 181 | cat(pcs[a],'\n\n') 182 | print(eval(parse(text=paste("summary(lm(",pcs[a]," ~ NSEG + as.factor(CNV_platform),data=phe2))",sep="")))) 183 | cat('\n\n\n\n\n') 184 | } 185 | 186 | ## Run through each PC to see how CNV count (NSEG) varies controlling for dataset 187 | for(a in 1:length(pcs)) { 188 | cat(pcs[a],'\n\n') 189 | print(eval(parse(text=paste("summary(lm(",pcs[a]," ~ NSEG + as.factor(dataset),data=phe2))",sep="")))) 190 | cat('\n\n\n\n\n') 191 | } 192 | 193 | ## PC2 looks to have an effect on CNV count independent of CNV platform (less so for dataset) 194 | 195 | 196 | 197 | ## PART 3.1: Plot of PC and CNV burden 198 | 199 | ## ==== Graph 200 | 201 | ## define graphing parameters 202 | cnv.colors <- rainbow(length(levels(as.factor(phe2$CNV_platform)))) 203 | col.indx <- cnv.colors[1:nlevels(as.factor(phe2$CNV_platform))] # number of colors 204 | cols <- col.indx[as.numeric(as.factor(phe2$CNV_platform))] # apply to datasets 205 | 206 | pdf(paste(graph_dir,'/PC2_NSEG_plot.pdf',sep=''),height=10,width=10) 207 | 208 | plot(phe2$C2, 209 | phe2$NSEG, 210 | col=cols, 211 | cex=1, 212 | pch=20) 213 | 214 | # legend 215 | legend("topleft",bty='n',legend=nms,title='CNV platform',col=col.indx,pch=20,bg='white',cex=1) 216 | 217 | dev.off() 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | -------------------------------------------------------------------------------- /Manhattan.R: -------------------------------------------------------------------------------- 1 | 2 | ## -- chromosome mid-points 3 | mid <- function(x1,x2) {abs(x2-x1)/2 + min(x1,x2)} 4 | mid2 <- function(x1,x2) {(x2-x1)/2 + x1} 5 | mid.vec <- function(x){ 6 | z <- vector(length=length(x)-1) 7 | for (i in 1:length(z)){z[i] <- mid(x[i+1],x[i])} 8 | return(z) 9 | } 10 | 11 | 12 | 13 | ## --- Updated Manhattan function 14 | manhattan <- function(dataframe, colors=c("gray10", "gray50"), ymax="max", limitchromosomes=1:23, suggestiveline=-log10(1e-5), genomewideline=-log10(5e-8), annotate=NULL, annotate2=NULL, ...) { 15 | 16 | d=dataframe 17 | if (!("CHR" %in% names(d) & "BP" %in% names(d) & "P" %in% names(d))) stop("Make sure your data frame contains columns CHR, BP, and P") 18 | 19 | if (any(limitchromosomes)) d=d[d$CHR %in% limitchromosomes, ] 20 | d=subset(na.omit(d[order(d$CHR, d$BP), ]), (P>0 & P<=1)) # remove na's, sort, and keep only 0