Skip to content

Commit ec1a0e9

Browse files
committed
conf based on genus
1 parent eb2f77a commit ec1a0e9

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/classifier.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ Tables.columnnames(m::ClassificationResult) = names(m)
5454

5555

5656
#### Underlying algorithm
57-
function naieve_bayes(seqs::Vector,refs::Vector,k, n_bootstrap,lp=false)
57+
function naieve_bayes(seqs::Vector,refs::Vector,k, n_bootstrap,lp,genera)
5858
t = time()
5959
N = length(refs)
6060
n = length(seqs)
@@ -76,14 +76,14 @@ function naieve_bayes(seqs::Vector,refs::Vector,k, n_bootstrap,lp=false)
7676
assignment = assign(kmer_array,log_probs)
7777
assignments[i] =assignment
7878
sample_size = sum(kmer_array) ÷ k
79-
confs[i] = bootstrap(vec(kmer_array),log_probs,assignment,sample_size,n_bootstrap)
79+
confs[i] = bootstrap(vec(kmer_array),log_probs,genera[assignment],sample_size,n_bootstrap,genera)
8080
end
8181
return assignments, confs, log_probs
8282
end
8383

8484

8585
function naieve_bayes(seqs::Vector,refs::Vector,taxa ::Array,k, n_bootstrap,lp=false)
86-
a,c,l = naieve_bayes(seqs,refs,k, n_bootstrap,lp)
86+
a,c,l = naieve_bayes(seqs,refs,k, n_bootstrap,lp,taxa[:,end])
8787
t = taxa[a,:]
8888
return hcat(t,c),l
8989
end
@@ -93,12 +93,12 @@ function assign(seq_mask,log_probs)
9393
return findmax(cond_probs)[2]
9494
end
9595

96-
function bootstrap(kmer_vec,log_probs,assignment, sample_size,n_bootstrap)
96+
function bootstrap(kmer_vec,log_probs,assignment, sample_size,n_bootstrap,genera)
9797
hits = 0
9898
seq_inds = eachindex(kmer_vec)[kmer_vec]
9999
for i in 1:n_bootstrap
100100
inds = rand(seq_inds,sample_size)
101-
if assign(inds,log_probs) == assignment
101+
if genera[assign(inds,log_probs)] == assignment
102102
hits +=1
103103
end
104104
end
@@ -160,22 +160,22 @@ end
160160

161161
### Alternatives for working without fastas
162162
function assign_taxonomy(seqs::Vector,ids,refs,taxa; k = 8, n_bootstrap = 100,keep_lp = false,lp=false)
163-
assignments,log_probs = naieve_bayes(seqs,refs,taxa,k,n_bootstrap,lp)
163+
assignments,log_probs = naieve_bayes(seqs,refs,taxa,k,n_bootstrap,lp,taxa[:,end])
164164
res = classification_result(ids,seqs,assignments)
165165
return keep_lp ? (res,log_probs) : res
166166
end
167167
function assign_taxonomy(seqs::Vector,refs::Vector,taxa::Array; k = 8, n_bootstrap = 100,keep_lp = false,lp=false)
168-
assignments,log_probs = naieve_bayes(seqs,refs,taxa,k,n_bootstrap,lp)
168+
assignments,log_probs = naieve_bayes(seqs,refs,taxa,k,n_bootstrap,lp,taxa[:,end])
169169
res = classification_result(fill("",length(seqs)),seqs,assignments)
170170
return keep_lp ? (res,log_probs) : res
171171
end
172172
function assign_taxonomy(seq,id,refs,taxa; k = 8, n_bootstrap = 100,keep_lp = false,lp=false)
173-
assignments,log_probs = naieve_bayes([seq],refs,taxa,k,n_bootstrap,lp)
173+
assignments,log_probs = naieve_bayes([seq],refs,taxa,k,n_bootstrap,lp,taxa[:,end])
174174
res = classification_result(id,seq,assignments)
175175
return keep_lp ? (res,log_probs) : res
176176
end
177177
function assign_taxonomy(seq,refs,taxa; k = 8, n_bootstrap = 100,keep_lp = false,lp=false)
178-
assignments,log_probs = naieve_bayes([seq],refs,taxa,k,n_bootstrap,lp)
178+
assignments,log_probs = naieve_bayes([seq],refs,taxa,k,n_bootstrap,lp,taxa[:,end])
179179
res = classification_result("",seq,assignments)
180180
return keep_lp ? (res,log_probs) : res
181181
end

0 commit comments

Comments
 (0)