annotate merge_and_filter.r @ 3:275ab5175fd6 draft

Uploaded
author davidvanzessen
date Thu, 27 Oct 2016 09:40:45 -0400
parents e85fec274cde
children 012a738edf5a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
1 args <- commandArgs(trailingOnly = TRUE)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
2
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
3
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
4 summaryfile = args[1]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
5 sequencesfile = args[2]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
6 mutationanalysisfile = args[3]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
7 mutationstatsfile = args[4]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
8 hotspotsfile = args[5]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
9 gene_identification_file= args[6]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
10 output = args[7]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
11 before.unique.file = args[8]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
12 unmatchedfile = args[9]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
13 method=args[10]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
14 functionality=args[11]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
15 unique.type=args[12]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
16 filter.unique=args[13]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
17 class.filter=args[14]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
18 empty.region.filter=args[15]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
19
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
20 summ = read.table(summaryfile, header=T, sep="\t", fill=T, stringsAsFactors=F, quote="")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
21 sequences = read.table(sequencesfile, header=T, sep="\t", fill=T, stringsAsFactors=F, quote="")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
22 mutationanalysis = read.table(mutationanalysisfile, header=T, sep="\t", fill=T, stringsAsFactors=F, quote="")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
23 mutationstats = read.table(mutationstatsfile, header=T, sep="\t", fill=T, stringsAsFactors=F, quote="")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
24 hotspots = read.table(hotspotsfile, header=T, sep="\t", fill=T, stringsAsFactors=F, quote="")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
25 gene_identification = read.table(gene_identification_file, header=T, sep="\t", fill=T, stringsAsFactors=F, quote="")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
26
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
27 if(method == "blastn"){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
28 "qseqid\tsseqid\tpident\tlength\tmismatch\tgapopen\tqstart\tqend\tsstart\tsend\tevalue\tbitscore"
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
29 gene_identification = gene_identification[!duplicated(gene_identification$qseqid),]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
30 ref_length = data.frame(sseqid=c("ca1", "ca2", "cg1", "cg2", "cg3", "cg4", "cm"), ref.length=c(81,81,141,141,141,141,52))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
31 gene_identification = merge(gene_identification, ref_length, by="sseqid", all.x=T)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
32 gene_identification$chunk_hit_percentage = (gene_identification$length / gene_identification$ref.length) * 100
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
33 gene_identification = gene_identification[,c("qseqid", "chunk_hit_percentage", "pident", "qstart", "sseqid")]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
34 colnames(gene_identification) = c("Sequence.ID", "chunk_hit_percentage", "nt_hit_percentage", "start_locations", "best_match")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
35 }
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
36
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
37 input.sequence.count = nrow(summ)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
38 print(paste("Number of sequences in summary file:", input.sequence.count))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
39
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
40 filtering.steps = data.frame(character(0), numeric(0))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
41
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
42 filtering.steps = rbind(filtering.steps, c("Input", input.sequence.count))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
43
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
44 filtering.steps[,1] = as.character(filtering.steps[,1])
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
45 filtering.steps[,2] = as.character(filtering.steps[,2])
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
46 #filtering.steps[,3] = as.numeric(filtering.steps[,3])
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
47
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
48 summ = merge(summ, gene_identification, by="Sequence.ID")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
49
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
50 summ = summ[summ$Functionality != "No results",]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
51
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
52 print(paste("Number of sequences after 'No results' filter:", nrow(summ)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
53
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
54 filtering.steps = rbind(filtering.steps, c("After 'No results' filter", nrow(summ)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
55
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
56 if(functionality == "productive"){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
57 summ = summ[summ$Functionality == "productive (see comment)" | summ$Functionality == "productive",]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
58 } else if (functionality == "unproductive"){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
59 summ = summ[summ$Functionality == "unproductive (see comment)" | summ$Functionality == "unproductive",]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
60 } else if (functionality == "remove_unknown"){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
61 summ = summ[summ$Functionality != "No results" & summ$Functionality != "unknown (see comment)" & summ$Functionality != "unknown",]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
62 }
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
63
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
64 print(paste("Number of sequences after functionality filter:", nrow(summ)))
0
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
65
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
66 filtering.steps = rbind(filtering.steps, c("After functionality filter", nrow(summ)))
0
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
67
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
68 result = merge(summ, mutationanalysis[,!(names(mutationanalysis) %in% names(summ)[-1])], by="Sequence.ID")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
69
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
70 print(paste("Number of sequences after merging with mutation analysis file:", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
71
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
72 result = merge(result, mutationstats[,!(names(mutationstats) %in% names(result)[-1])], by="Sequence.ID")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
73
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
74 print(paste("Number of sequences after merging with mutation stats file:", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
75
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
76 result = merge(result, hotspots[,!(names(hotspots) %in% names(result)[-1])], by="Sequence.ID")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
77
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
78 print(paste("Number of sequences after merging with hotspots file:", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
79
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
80 sequences = sequences[,c("Sequence.ID", "FR1.IMGT", "CDR1.IMGT", "FR2.IMGT", "CDR2.IMGT", "FR3.IMGT", "CDR3.IMGT")]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
81 names(sequences) = c("Sequence.ID", "FR1.IMGT.seq", "CDR1.IMGT.seq", "FR2.IMGT.seq", "CDR2.IMGT.seq", "FR3.IMGT.seq", "CDR3.IMGT.seq")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
82 result = merge(result, sequences, by="Sequence.ID", all.x=T)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
83
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
84 print(paste("Number of sequences in result after merging with sequences:", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
85
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
86 result$VGene = gsub("^Homsap ", "", result$V.GENE.and.allele)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
87 result$VGene = gsub("[*].*", "", result$VGene)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
88 result$DGene = gsub("^Homsap ", "", result$D.GENE.and.allele)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
89 result$DGene = gsub("[*].*", "", result$DGene)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
90 result$JGene = gsub("^Homsap ", "", result$J.GENE.and.allele)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
91 result$JGene = gsub("[*].*", "", result$JGene)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
92
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
93 print(paste("Number of empty CDR1 sequences:", sum(result$CDR1.IMGT.seq == "")))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
94 print(paste("Number of empty FR2 sequences:", sum(result$FR2.IMGT.seq == "")))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
95 print(paste("Number of empty CDR2 sequences:", sum(result$CDR2.IMGT.seq == "")))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
96 print(paste("Number of empty FR3 sequences:", sum(result$FR3.IMGT.seq == "")))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
97
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
98 if(empty.region.filter == "leader"){
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
99 result = result[result$FR1.IMGT.seq != "" & result$CDR1.IMGT.seq != "" & result$FR2.IMGT.seq != "" & result$CDR2.IMGT.seq != "" & result$FR3.IMGT.seq != "", ]
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
100 print(paste("Number of sequences after empty FR1, CDR1, FR2, CDR2 and FR3 column filter:", nrow(result)))
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
101 filtering.steps = rbind(filtering.steps, c("After empty FR1, CDR1, FR2, CDR2, FR3 filter", nrow(result)))
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
102 } else if(empty.region.filter == "FR1"){
0
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
103 result = result[result$CDR1.IMGT.seq != "" & result$FR2.IMGT.seq != "" & result$CDR2.IMGT.seq != "" & result$FR3.IMGT.seq != "", ]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
104 print(paste("Number of sequences after empty CDR1, FR2, CDR2 and FR3 column filter:", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
105 filtering.steps = rbind(filtering.steps, c("After empty CDR1, FR2, CDR2, FR3 filter", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
106 } else if(empty.region.filter == "CDR1"){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
107 result = result[result$FR2.IMGT.seq != "" & result$CDR2.IMGT.seq != "" & result$FR3.IMGT.seq != "", ]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
108 print(paste("Number of sequences after empty FR2, CDR2 and FR3 column filter:", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
109 filtering.steps = rbind(filtering.steps, c("After empty FR2, CDR2, FR3 filter", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
110 } else if(empty.region.filter == "FR2"){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
111 result = result[result$CDR2.IMGT.seq != "" & result$FR3.IMGT.seq != "", ]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
112 print(paste("Number of sequences after empty CDR2 and FR3 column filter:", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
113 filtering.steps = rbind(filtering.steps, c("After empty CDR2, FR3 filter", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
114 }
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
115
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
116 print(paste("Number of sequences in result after CDR/FR filtering:", nrow(result)))
2
e85fec274cde Uploaded
davidvanzessen
parents: 1
diff changeset
117 print(paste("Number of sequences in result after CDR/FR filtering:", nrow(result[!grepl("unmatched", result$best_match),])))
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
118
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
119 if(empty.region.filter == "leader"){
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
120 result = result[!(grepl("n|N", result$FR1.IMGT.seq) | grepl("n|N", result$FR2.IMGT.seq) | grepl("n|N", result$FR3.IMGT.seq) | grepl("n|N", result$CDR1.IMGT.seq) | grepl("n|N", result$CDR2.IMGT.seq) | grepl("n|N", result$CDR3.IMGT.seq)),]
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
121 } else if(empty.region.filter == "FR1"){
0
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
122 result = result[!(grepl("n|N", result$FR2.IMGT.seq) | grepl("n|N", result$FR3.IMGT.seq) | grepl("n|N", result$CDR1.IMGT.seq) | grepl("n|N", result$CDR2.IMGT.seq) | grepl("n|N", result$CDR3.IMGT.seq)),]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
123 } else if(empty.region.filter == "CDR1"){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
124 result = result[!(grepl("n|N", result$FR2.IMGT.seq) | grepl("n|N", result$FR3.IMGT.seq) | grepl("n|N", result$CDR2.IMGT.seq) | grepl("n|N", result$CDR3.IMGT.seq)),]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
125 } else if(empty.region.filter == "FR2"){
2
e85fec274cde Uploaded
davidvanzessen
parents: 1
diff changeset
126 result = result[!(grepl("n|N", result$FR3.IMGT.seq) | grepl("n|N", result$CDR2.IMGT.seq) | grepl("n|N", result$CDR3.IMGT.seq)),]
0
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
127 }
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
128
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
129 print(paste("Number of sequences in result after n filtering:", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
130 filtering.steps = rbind(filtering.steps, c("After N filter", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
131
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
132 cleanup_columns = c("FR1.IMGT.Nb.of.mutations",
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
133 "CDR1.IMGT.Nb.of.mutations",
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
134 "FR2.IMGT.Nb.of.mutations",
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
135 "CDR2.IMGT.Nb.of.mutations",
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
136 "FR3.IMGT.Nb.of.mutations")
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
137
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
138 for(col in cleanup_columns){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
139 result[,col] = gsub("\\(.*\\)", "", result[,col])
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
140 result[,col] = as.numeric(result[,col])
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
141 result[is.na(result[,col]),] = 0
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
142 }
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
143
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
144 write.table(result, before.unique.file, sep="\t", quote=F,row.names=F,col.names=T)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
145
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
146 if(filter.unique != "no"){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
147 clmns = names(result)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
148
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
149 if(empty.region.filter == "leader"){
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
150 result$unique.def = paste(result$FR1.IMGT.seq, result$CDR1.IMGT.seq, result$FR2.IMGT.seq, result$CDR2.IMGT.seq, result$FR3.IMGT.seq, result$CDR3.IMGT.seq)
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
151 } else if(empty.region.filter == "FR1"){
0
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
152 result$unique.def = paste(result$CDR1.IMGT.seq, result$FR2.IMGT.seq, result$CDR2.IMGT.seq, result$FR3.IMGT.seq, result$CDR3.IMGT.seq)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
153 } else if(empty.region.filter == "CDR1"){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
154 rresult$unique.def = paste(result$FR2.IMGT.seq, result$CDR2.IMGT.seq, result$FR3.IMGT.seq, result$CDR3.IMGT.seq)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
155 } else if(empty.region.filter == "FR2"){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
156 result$unique.def = paste(result$CDR2.IMGT.seq, result$FR3.IMGT.seq, result$CDR3.IMGT.seq)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
157 }
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
158
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
159 if(grepl("_c", filter.unique)){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
160 result$unique.def = paste(result$unique.def, result$best_match)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
161 }
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
162
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
163 #fltr = result$unique.def %in% result.filtered$unique.def
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
164
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
165 if(grepl("keep", filter.unique)){
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
166 result$unique.def = paste(result$unique.def, result$best_match) #keep the unique sequences that are in multiple classes
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
167 result = result[!duplicated(result$unique.def),]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
168 } else {
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
169 result = result[duplicated(result$unique.def) | duplicated(result$unique.def, fromLast=T),]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
170 result$unique.def = paste(result$unique.def, result$best_match) #keep the unique sequences that are in multiple classes
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
171 result = result[!duplicated(result$unique.def),]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
172 }
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
173
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
174 #result = result[,clmns]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
175
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
176 #write.table(inputdata.removed, "unique_removed.csv", sep=",",quote=F,row.names=F,col.names=T)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
177 }
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
178
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
179 filtering.steps = rbind(filtering.steps, c("After filter unique sequences", nrow(result)))
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
180
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
181
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
182 splt = strsplit(class.filter, "_")[[1]]
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
183 chunk_hit_threshold = as.numeric(splt[1])
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
184 nt_hit_threshold = as.numeric(splt[2])
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
185
2
e85fec274cde Uploaded
davidvanzessen
parents: 1
diff changeset
186 higher_than=(result$chunk_hit_percentage >= chunk_hit_threshold & result$nt_hit_percentage >= nt_hit_threshold)
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
187
2
e85fec274cde Uploaded
davidvanzessen
parents: 1
diff changeset
188 unmatched=result[NULL,c("Sequence.ID", "chunk_hit_percentage", "nt_hit_percentage", "start_locations", "best_match")]
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
189
2
e85fec274cde Uploaded
davidvanzessen
parents: 1
diff changeset
190 if(!all(higher_than, na.rm=T)){ #check for no unmatched
e85fec274cde Uploaded
davidvanzessen
parents: 1
diff changeset
191 unmatched = result[!higher_than,]
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
192 unmatched = unmatched[,c("Sequence.ID", "chunk_hit_percentage", "nt_hit_percentage", "start_locations", "best_match")]
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
193 unmatched$best_match = paste("unmatched,", unmatched$best_match)
2
e85fec274cde Uploaded
davidvanzessen
parents: 1
diff changeset
194 result[!higher_than,"best_match"] = paste("unmatched,", result[!higher_than,"best_match"])
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
195 }
0
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
196
3
275ab5175fd6 Uploaded
davidvanzessen
parents: 2
diff changeset
197 if(class.filter == "101_101"){
275ab5175fd6 Uploaded
davidvanzessen
parents: 2
diff changeset
198 result$best_match = "all"
275ab5175fd6 Uploaded
davidvanzessen
parents: 2
diff changeset
199 }
275ab5175fd6 Uploaded
davidvanzessen
parents: 2
diff changeset
200
1
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
201 if(any(higher_than, na.rm=T)){
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
202 #summ = summ[higher_than,]
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
203 }
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
204
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
205 if(nrow(summ) == 0){
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
206 stop("No data remaining after filter")
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
207 }
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
208
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
209 result$past = do.call(paste, c(result[unlist(strsplit(unique.type, ","))], sep = ":"))
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
210
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
211 result = result[!(duplicated(result$past)), ]
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
212
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
213 result = result[,!(names(result) %in% c("past"))]
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
214
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
215 print(paste("Number of sequences in result after", unique.type, "filtering:", nrow(result)))
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
216
faae21ba5c63 Uploaded
davidvanzessen
parents: 0
diff changeset
217 filtering.steps = rbind(filtering.steps, c("After remove duplicates based on filter", nrow(result)))
0
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
218
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
219 print(paste("Number of rows in result:", nrow(result)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
220 print(paste("Number of rows in unmatched:", nrow(unmatched)))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
221
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
222 matched.sequences = result[!grepl("^unmatched", result$best_match),]
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
223
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
224 write.table(x=matched.sequences, file=gsub("merged.txt$", "filtered.txt", output), sep="\t",quote=F,row.names=F,col.names=T)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
225
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
226 matched.sequences.count = nrow(matched.sequences)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
227 unmatched.sequences.count = sum(grepl("^unmatched", result$best_match))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
228
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
229 filtering.steps = rbind(filtering.steps, c("Number of matched sequences", matched.sequences.count))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
230 filtering.steps = rbind(filtering.steps, c("Number of unmatched sequences", unmatched.sequences.count))
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
231 filtering.steps[,2] = as.numeric(filtering.steps[,2])
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
232 filtering.steps$perc = round(filtering.steps[,2] / input.sequence.count * 100, 2)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
233
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
234 write.table(x=filtering.steps, file=gsub("unmatched", "filtering_steps", unmatchedfile), sep="\t",quote=F,row.names=F,col.names=F)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
235
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
236 write.table(x=result, file=output, sep="\t",quote=F,row.names=F,col.names=T)
c33d93683a09 Uploaded
davidvanzessen
parents:
diff changeset
237 write.table(x=unmatched, file=unmatchedfile, sep="\t",quote=F,row.names=F,col.names=T)