我有表格格式的BLAST结果数据。我对第一列(query_ID)和第3列(基因)感兴趣。每个查询ID都有多个基因命中。我想根据每个查询ID计算基因。例如,“CSAI_contig04661_6”有5个基因命中。我希望输出格式如下
CSAI_contig04661_6 GCST(3)
Y1099
SMC6A
query_ID subject_id gene organism identity alignment_length mismatches gap_opens q.start q.end s.start s.end evalue bit_score
1 CSAI_contig04661_6 sp|O65396 GCST ARATH 86.03 408 56 1 72 478 1 408 0.0e+00 738.0
2 CSAI_contig04661_6 sp|Q681Y3 Y1099 ARATH 22.55 337 244 10 140 474 103 424 8.0e-09 56.6
3 CSAI_contig04661_6 sp|Q9FLR5 SMC6A ARATH 24.27 103 66 3 156 249 342 441 4.6e+00 28.9
4 CSAI_contig04661_6 sp|Q9LQI7 GCST ARATH 27.03 74 47 2 230 300 31 100 8.1e+00 27.7
5 CSAI_contig04661_6 sp|P56795 GCST ARATH 28.95 76 49 4 436 509 15 87 8.4e+00 27.3
6 CSAI_isotig00001_4 sp|Q8VZE4 PP299 ARATH 29.63 108 55 5 213 307 10 109 1.6e+00 30.4
7 CSAI_isotig00001_4 sp|Q9M342 WAKLP ARATH 28.28 99 64 3 261 355 320 415 1.9e+00 30.4
8 CSAI_isotig00001_4 sp|Q9ZUC1 QORL ARATH 29.58 71 44 3 365 435 152 216 2.7e+00 29.6
9 CSAI_isotig00001_4 sp|Q5PNU3 AMSH3 ARATH 32.56 43 29 0 411 453 376 418 3.7e+00 29.3
10 CSAI_isotig00001_4 sp|F4K495 MOB2A ARATH 26.09 46 28 1 417 456 39 84 5.5e+00 28.1
11 CSAI_isotig00001_4 sp|Q9CA60 C98A9 ARATH 36.59 41 24 1 271 309 91 131 9.6e+00 27.7
12 CSAI_isotig00004_3 sp|Q93V43 GCST ARATH 27.84 97 55 2 135 220 92 184 2.0e-03 39.3
13 CSAI_isotig00004_3 sp|O64628 TXND9 ARATH 32.86 70 39 2 149 218 10 71 7.4e-01 30.4
14 CSAI_isotig00004_3 sp|O23212 U2A2A ARATH 50.00 24 12 0 186 209 46 69 2.2e+00 29.6
15 CSAI_isotig00004_3 sp|Q9LE81 IRE ARATH 26.67 75 41 2 15 75 44 118 5.6e+00 28.5
16 CSAI_isotig00004_3 sp|Q9LFN5 GLR25 ARATH 33.93 56 34 1 280 332 270 325 7.4e+00 28.1
我试着用循环计算一个基因出现在查询ID上的时间。但它不起作用。我是编程的新手如果我犯了一些错误,我希望你能原谅我。 我需要你的建议来纠正它。
testfile<-s_t38kbat
head(testfile)
col1<- trialfile$query_id
col2<- trialfile$gene
counting_columns(col1,col2)
length(col1)==length(col2)
length(col1) > 0
length(col2) > 0
col_element = col1[0]
start=0
end=0
large_dick = {}
for (i in (0:length(col1))) element = col1[i] {
if (element != col1_element) {
start=end
end=i
}
large_dick[col1_element] = count_unique_elements(col2, range(start:end)
col1_element=element
if (end < length(col1))
large_dick[col1_element] = count_unique_elements(col2, range(end:length(col1))
}
return large_dick
count_unique_elements(col2, start, end)
disk{}
for (i in range(start,end)) element= col2[i] {
if (disk has_key(element)) {
val= disk.get(element)
val=val+1
disk[element] = val
}
else
disk[element] = 1
}
return(disk)
print(counting_columns(cat1,cat2))
}