Kraken2 report完全分類注釋

kraken2 手冊:https://github.com/DerrickWood/kraken2/wiki/Manual

1 kraken2 report是這樣子的

想把各分類都注釋上去呢

2 python3代碼

思路:
(1) 根據(jù)第四列判斷domain phylum class order family genus species兴蒸,將分類信息賦值給變量,不考慮含數(shù)字的分類昆雀。
(2) 根據(jù)條件將分類信息加到第六列輸出即可闹炉。

(U)nclassified, (R)oot, (D)omain, (K)ingdom, (P)hylum, (C)lass, (O)rder, (F)amily, (G)enus, or (S)pecies

#!/usr/bin/env python3
import os, sys, re
ms, infile_name, outfile_name = sys.argv

with open(infile_name, 'r') as infile:
    with open(outfile_name, 'w') as o:
        Domain = ""
        for line in infile:
            line = line.strip()
            lines = re.split(r'\t', line)
            lines[5] = re.split(r'^[ ]*', lines[5])[1]
            if lines[3] == "D":
                Domain = lines[5]
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "P":
                Phylum = lines[5]
                lines[5] = Domain+";"+Phylum
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "C":
                Class = lines[5]
                lines[5] = Domain+";"+Phylum+";"+Class
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "O":
                Order = lines[5]
                lines[5] = Domain+";"+Phylum+";"+Class+";"+Order
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "F":
                Family = lines[5]
                lines[5] = Domain+";"+Phylum+";"+Class+";"+Order+";"+Family
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "G":
                Genus = lines[5]
                lines[5] = Domain+";"+Phylum+";"+Class+";"+Order+";"+Family+";"+Genus
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "S":
                Species = lines[5]
                lines[5] = Domain+";"+Phylum+";"+Class+";"+Order+";"+Family+";"+Genus+";"+Species
                o.write("\t".join(lines))
                o.write("\n")

上面漏掉了kingdom的信息纹因,尤其是真菌是Kingdom在結(jié)果中完全看不到真菌。奇怪的是Kraken注釋,只有部分Domain有kingdom再芋,修改代碼。后續(xù)數(shù)據(jù)處理不變坚冀。

#!/usr/bin/env python3
import os, sys, re
ms, infile_name, outfile_name = sys.argv

with open(infile_name, 'r') as infile:
    with open(outfile_name, 'w') as o:
        Domain = ""
        for line in infile:
            line = line.strip()
            lines = re.split(r'\t', line)
            lines[5] = re.split(r'^[ ]*', lines[5])[1]
            if lines[3] == "D":
                Domain = lines[5]
                o.write("\t".join(lines))
                o.write("\n")
                Kingdom = "NG"  ## Kingdom非必須济赎,Domain必須,在這里賦空值
            elif lines[3] == "K":
                Kingdom = lines[5]
                lines[5] = Domain+";"+Kingdom
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "P":
                Phylum = lines[5]
                lines[5] = Domain+";"+Kingdom+";"+Phylum
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "C":
                Class = lines[5]
                lines[5] = Domain+";"+Kingdom+";"+Phylum+";"+Class
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "O":
                Order = lines[5]
                lines[5] = Domain+";"+Kingdom+";"+Phylum+";"+Class+";"+Order
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "F":
                Family = lines[5]
                lines[5] = Domain+";"+Kingdom+";"+Phylum+";"+Class+";"+Order+";"+Family
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "G":
                Genus = lines[5]
                lines[5] = Domain+";"+Kingdom+";"+Phylum+";"+Class+";"+Order+";"+Family+";"+Genus
                o.write("\t".join(lines))
                o.write("\n")
            elif lines[3] == "S":
                Species = lines[5]
                lines[5] = Domain+";"+Kingdom+";"+Phylum+";"+Class+";"+Order+";"+Family+";"+Genus+";"+Species
                o.write("\t".join(lines))
                o.write("\n")

3 運(yùn)行腳本,查看結(jié)果

任意找一個(gè)樣本的kraken2結(jié)果司训,包含所有物種物種注釋結(jié)果构捡,即使reads count是0。行數(shù)均為31030壳猜。

conda activate python3.7
python3 ../script/kraken_anno.py sample_report.tsv kraken_anno.txt

4 抽提種水平注釋

cat kraken_anno.txt | awk -F"\t" '{if($4=="S") print $6}' > kraken_anno2.txt

行數(shù)為17091勾徽,該數(shù)據(jù)庫中各物種總數(shù)。
為保證處理結(jié)果與kraken2的合并結(jié)果species完全一致统扳,還需做:

' -> 空
[] -> 空

5 統(tǒng)計(jì)各門中基因組數(shù)量

四大域/界:古菌喘帚,細(xì)菌,真核咒钟,病毒
kraken2數(shù)據(jù)庫的基因組統(tǒng)計(jì)吹由,門水平

      1 Archaea Candidatus Geothermarchaeota
      1 Archaea Candidatus Korarchaeota
      1 Archaea Candidatus Lokiarchaeota
      1 Archaea Candidatus Micrarchaeota
     57 Archaea Crenarchaeota
    230 Archaea Euryarchaeota
     24 Archaea Thaumarchaeota
     17 Bacteria        Acidobacteria
   1164 Bacteria        Actinobacteria
     17 Bacteria        Aquificae
      3 Bacteria        Armatimonadetes
    484 Bacteria        Bacteroidetes
      1 Bacteria        Balneolaeota
      1 Bacteria        Caldiserica
      1 Bacteria        Calditrichaeota
      1 Bacteria        Candidatus Bipolaricaulota
      1 Bacteria        Candidatus Cloacimonetes
      1 Bacteria        Candidatus Omnitrophica
      4 Bacteria        Candidatus Saccharibacteria
     22 Bacteria        Chlamydiae
     14 Bacteria        Chlorobi
     19 Bacteria        Chloroflexi
      1 Bacteria        Chrysiogenetes
      8 Bacteria        Coprothermobacterota
    190 Bacteria        Cyanobacteria
      5 Bacteria        Deferribacteres
     36 Bacteria        Deinococcus-Thermus
      2 Bacteria        Dictyoglomi
      3 Bacteria        Elusimicrobia
      1 Bacteria        Fibrobacteres
   1001 Bacteria        Firmicutes
     25 Bacteria        Fusobacteria
      4 Bacteria        Gemmatimonadetes
      2 Bacteria        Ignavibacteriae
      1 Bacteria        Kiritimatiellaeota
      9 Bacteria        Nitrospirae
     35 Bacteria        Planctomycetes
   3102 Bacteria        Proteobacteria
     60 Bacteria        Spirochaetes
      8 Bacteria        Synergistetes
    152 Bacteria        Tenericutes
      7 Bacteria        Thermodesulfobacteria
     32 Bacteria        Thermotogae
     16 Bacteria        Verrucomicrobia
     24 Eukaryota       Apicomplexa
     52 Eukaryota       Ascomycota
      2 Eukaryota       Bacillariophyta
      5 Eukaryota       Basidiomycota
      1 Eukaryota       Cercozoa
      4 Eukaryota       Chlorophyta
      1 Eukaryota       Chordata
      1 Eukaryota       Ciliophora
      7 Eukaryota       Euglenozoa
      2 Eukaryota       Evosea
      4 Eukaryota       Microsporidia
      4 Eukaryota       Rhodophyta
     69 Eukaryota       Streptophyta
    729 Viruses Artverviricota
    410 Viruses Cossaviricota
    903 Viruses Cressdnaviricota
      7 Viruses Dividoviricota
    222 Viruses Duplornaviricota
     46 Viruses Hofneiviricota
    789 Viruses Kitrinoviricota
   1153 Viruses Lenarviricota
    645 Viruses Negarnaviricota
    127 Viruses Nucleocytoviricota
    111 Viruses Peploviricota
     61 Viruses Phixviricota
    894 Viruses Pisuviricota
     94 Viruses Preplasmiviricota
    417 Viruses Saleviricota
   3542 Viruses Uroviricota
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市盯腌,隨后出現(xiàn)的幾起案子溉知,更是在濱河造成了極大的恐慌,老刑警劉巖腕够,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件级乍,死亡現(xiàn)場離奇詭異,居然都是意外死亡帚湘,警方通過查閱死者的電腦和手機(jī)玫荣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來大诸,“玉大人捅厂,你說我怎么就攤上這事∽嗜幔” “怎么了焙贷?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贿堰。 經(jīng)常有香客問我辙芍,道長,這世上最難降的妖魔是什么羹与? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任故硅,我火速辦了婚禮,結(jié)果婚禮上纵搁,老公的妹妹穿的比我還像新娘吃衅。我一直安慰自己,他們只是感情好腾誉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布徘层。 她就那樣靜靜地躺著峻呕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惑灵。 梳的紋絲不亂的頭發(fā)上山上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音英支,去河邊找鬼佩憾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛干花,可吹牛的內(nèi)容都是我干的妄帘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼池凄,長吁一口氣:“原來是場噩夢啊……” “哼抡驼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起肿仑,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤致盟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后尤慰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馏锡,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年伟端,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了杯道。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡责蝠,死狀恐怖党巾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情霜医,我是刑警寧澤齿拂,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站肴敛,受9級特大地震影響署海,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜值朋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望巩搏。 院中可真熱鬧昨登,春花似錦、人聲如沸贯底。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至笙什,卻和暖如春飘哨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背琐凭。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工芽隆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人统屈。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓胚吁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親愁憔。 傳聞我的和親對象是個(gè)殘疾皇子腕扶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容