日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python通用讀取vcf文件的類(復制粘貼即可用)

瀏覽:20日期:2022-08-05 08:42:10

前言

處理vcf文件的時候,需要多種切割,正則匹配,如果要自己寫其實會比較麻煩,并且每次還得根據vcf文件格式或者需要讀取的值不同要修改相應的代碼。因此很多人會選擇一些python的vcf的庫,但是首先你得安裝這個庫, 并且有一些庫它固定了能夠讀的內容,如果你的vcf的信息不在它固定的里面,就讀不出來。比如最近我想讀一個樣本的AF,但是它放在最后樣本的GT那列,不在INFO那一列,有一些庫竟然無能為力。因此我寫了這個通用的讀vcf的類,直接復制粘貼這部分代碼就可以方便的用這個類進行vcf文件的讀取,過濾,寫出等操作。

使用說明

首先復制類的代碼,后面就可以直接用了

import sysimport osimport subprocessclass Record(object): ’’’ One line information in vcf file ’’’ def __init__(self, line): info = line.split('t') self.line = line self.CHROM = info[0] self.POS = info[1] self.ID = info[2] self.REF = info[3] self.ALT = info[4] self.QUAL = info[5] self.FILTER = info[6] self.INFO = [{pair_lst[0]: pair_lst[1] if len(pair_lst)> 1 else ''} for pair_lst in [pair.split('=') for pair in info[7].split(';')]] self.FORMAT = info[8].split(':') self.sample_num = len(info) -7 self.GT = [] for i in range(2): GT_value = info[8 + i +1].split(':') GT_dict = {} for g in range(len(GT_value)): GT_dict[self.FORMAT[g]] = GT_value[g] self.GT.append(GT_dict) class VCF(object): ’’’ VCF class, read VCF, write VCF, get VCF information ’’’ def __init__(self, uncompress_vcf): self.header = [] self.reader = open(uncompress_vcf, ’r’) self.line = self.reader.readline().strip() while self.line.startswith(’#’): self.header.append(self.line) self.line = self.reader.readline().strip() self.record = Record(self.line) def __iter__(self): return self def __next__(self): self.line = self.reader.readline().strip() if self.line != '': self.record = Record(self.line) return self.record else: self.reader.close() raise StopIteration() def reader_close(self): self.reader.close() 主要有兩個類,一個是VCF類,存儲的是vcf的信息,及對vcf文件的操作,一個是Record類,它包括vcf某一行存儲的全部信息 讀入vcf文件

gatk_result = 'realignment.vcf'gatk = VCF(gatk_result)

查看vcf的header

gatk.header

查看vcf當前行中儲存的信息,一開始是首行。它以Record這個類保存的。注意VCF類是個迭代器類,可以用next和for循環來讀入每一行的信息

record = gatk.record #這里record存儲的是該Record類的地址

查看該record的屬性,包括line(行的內容,方便寫出某行), CHROM, POS, ID,REF,ALT, QUAL, FILTER, INFO(字典的形式存儲), FORMAT, sample_num(多少個樣本),GT(樣本的基因型信息,這里在vcf一般是在后面用樣本名表示的列)

record.CHROMrecord.linerecord.ID #其他的屬性同理

INFO的讀取

這是vcf中INFO的原始表示

CONTQ=28;DP=38;ECNT=1;GERMQ=76;MBQ=20,37;MFRL=171,229;MMQ=60,60;MPOS=26;NALOD=1.16;NLOD=3.91; POPAF=6.00;RCNTS=0,0;ROQ=14;SEQQ=1;STRANDQ=11;TLOD=4.56

它在record中的存儲形式

record.INFO [{’CONTQ’: ’28’}, {’DP’: ’38’}, {’ECNT’: ’1’}, {’GERMQ’: ’76’}, {’MBQ’: ’20,37’}, {’MFRL’: ’171,229’}, {’MMQ’: ’60,60’}, {’MPOS’: ’26’}, {’NALOD’: ’1.16’}, {’NLOD’: ’3.91’}, {’POPAF’: ’6.00’}, {’RCNTS’: ’0,0’}, {’ROQ’: ’14’}, {’SEQQ’: ’1’}, {’STRANDQ’: ’11’}, {’TLOD’: ’4.56’}]

GT的讀取

這是GT在vcf的存儲形式,FORMAT對應著GT的值

GT:AD:AF:DP:F1R2:F2R1:OBAM:OBAMRC:OBF:OBP:OBQ:OBQRC:SB 0/1:21,2:0.120:23:7,1:13,1:false:true:0.500:0.078:100.00:41.80:12,9,1,1 0/0:13,0:0.065:13:7,0:6,0:false:false:.:.:.:.:10,3,0,0 分別是FORMAT, tumor樣本GT, normal樣本GT對應的值

這是在record中的存儲形式

record.GT [{’GT’: ’0/1’, ’OBQRC’: ’41.80’, ’SB’: ’12,9,1,1’, ’DP’: ’23’, ’OBF’: ’0.500’, ’OBAM’: ’false’, ’OBP’: ’0.078’, ’AD’: ’21,2’, ’F2R1’: ’13,1’, ’F1R2’: ’7,1’, ’AF’: ’0.120’, ’OBQ’: ’100.00’, ’OBAMRC’: ’true’}, {’GT’: ’0/0’, ’OBQRC’: ’.’, ’SB’: ’10,3,0,0’, ’DP’: ’13’, ’OBF’: ’.’, ’OBAM’: ’false’, ’OBP’: ’.’, ’AD’: ’13,0’, ’F2R1’: ’6,0’, ’F1R2’: ’7,0’, ’AF’: ’0.065’, ’OBQ’: ’.’, ’OBAMRC’: ’false’}]

第一個字典就是tumor的GT,第二個字典就是normal的GT,當然,根據你的樣本數量會有多個字典,這里可以按索引取出比如要取出第一個樣本的,只需要record.GT[0]就行

把tumor AF大于0.5的line打印出來

for record in gatk: # compare GATK tumor AF to 0.05 if float(record.GT[0][’AF’]) > 0.05: print(record.line)

把FILTER為PASS的并且tumor AF>0.05寫入列表并寫出最后的VCF文件

snv = 'filter.vcf'result = gatk.headerfor record in gatk: if record.FILTER == 'PASS' and float(record.GT[0][’AF’]) > 0.05: result.append(record.line)# write out resultwith open(snv, ’w+’) as snvf: for line in result: print(line, file = snvf)

查看gatk的下一個record, 因為VCF類是可迭代的,因此除了for也支持next

record = next(gatk)print(record.line)

到此這篇關于python通用讀取vcf文件的類(可以直接復制粘貼使用)的文章就介紹到這了,更多相關python vcf文件的類內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品福利电影| 婷婷国产精品| 中文久久精品| 国产精品99一区二区| 久久精品亚洲人成影院| 999国产精品永久免费视频app| 亚洲精品美女91| 国产精品欧美大片| 亚洲一本视频| 午夜欧美精品| 日韩中文字幕区一区有砖一区 | 亚洲精品系列| 久久午夜精品| 综合一区av| 日韩国产91| 久久的色偷偷| 精品国产欧美日韩一区二区三区| 国产精品1区| 日韩精品一级| 国产精品一在线观看| 麻豆精品少妇| 亚洲精选91| 国产精品啊v在线| 日韩欧美精品一区二区综合视频| 亚洲丝袜啪啪| 国产 日韩 欧美 综合 一区| 精品国产免费人成网站| 欧美精品羞羞答答| 国产精品videossex| 久久免费福利| 岛国av在线网站| 久久精品国产亚洲夜色av网站 | 亚洲一区二区三区高清| 视频一区欧美日韩| 欧美亚洲色图校园春色| 精品资源在线| 欧美成人久久| 亚欧成人精品| 国产中文字幕一区二区三区| 影视先锋久久| 日韩动漫一区| 日韩国产在线| 美国三级日本三级久久99 | 亚洲精品日韩久久| 欧美国产三级| 久久伦理在线| 日韩高清中文字幕一区| 国产精品黑丝在线播放| 国产亚洲福利| 国产精品久久国产愉拍| 激情久久婷婷| 国产欧美久久一区二区三区| 日韩大片在线播放| 三级在线观看一区二区| 国产在线视频欧美一区| 久久久久久美女精品| 日韩精品免费视频一区二区三区| 欧美精品不卡| 香蕉精品视频在线观看| 成人三级高清视频在线看| 国产情侣一区| 亚洲精品极品| 日韩av黄色在线| 国产精品成人自拍| 亚洲欧美日韩精品一区二区| 亚洲精品三级| 国产精品伦理久久久久久| 欧美在线亚洲综合一区| 国产精品视区| 久久婷婷国产| 久久成人精品| 成人国产精选| 亚洲精品动态| 精品日韩视频| 国产亚洲人成a在线v网站| 精品一区欧美| 久久99国产精品视频| 亚洲制服少妇| 亚洲伊人av| 国产精品自在| 亚洲黄色在线| 精品亚洲a∨一区二区三区18| 国产毛片久久| 成人在线视频区| 日本aⅴ亚洲精品中文乱码| 播放一区二区| 久久久免费人体| 亚洲开心激情| 好吊日精品视频| 老司机免费视频一区二区| 男人操女人的视频在线观看欧美| 日韩精品诱惑一区?区三区| 久久国产精品免费一区二区三区| 亚洲欧美成人综合| 成人看片网站| 精品免费av| 国产精选在线| 九九久久电影| 日本aⅴ亚洲精品中文乱码| 麻豆视频一区二区| 亚洲视频电影在线| 国产综合精品| 亚洲爱爱视频| 水蜜桃久久夜色精品一区| 伊人久久大香伊蕉在人线观看热v| 免费欧美日韩| 一区二区三区网站| 一区二区亚洲精品| 久久久成人网| 高清久久一区| 国产极品嫩模在线观看91精品| 蘑菇福利视频一区播放| 91综合网人人| 麻豆91小视频| 国产美女久久| 欧美精品三级在线| 日韩 欧美一区二区三区| 免费观看在线综合| 亚洲欧美日本视频在线观看| 久久国产日本精品| 深夜视频一区二区| 久久精品观看| 视频福利一区| 久久天堂成人| 国产在线欧美| 今天的高清视频免费播放成人| 影视先锋久久| 1024精品一区二区三区| 日韩精品一区二区三区免费观看| 日韩毛片视频| 中文字幕色婷婷在线视频 | 蜜臀av国产精品久久久久| 三级欧美在线一区| 一区二区三区四区日韩| 亚洲欧美日韩专区| 男女男精品网站| 少妇精品久久久一区二区三区| 麻豆亚洲精品| 亚洲精品成a人ⅴ香蕉片| 日韩国产欧美三级| 久久99免费视频| 精品网站999| 久久精品亚洲欧美日韩精品中文字幕| 欧美~级网站不卡| 综合亚洲视频| 日韩影院免费视频| 精品三级在线观看视频| 国产一二在线播放| 久久精品国产68国产精品亚洲| 免费看的黄色欧美网站| 日韩激情一二三区| 国产婷婷精品| 国产精品v亚洲精品v日韩精品 | 国产精品啊啊啊| 九九久久国产| 精品三级国产| 青青久久av| 影音国产精品| 日韩欧美三区| 精品国产亚洲日本| 亚洲先锋成人| 天堂精品久久久久| 久久只有精品| 欧美综合另类| 天堂精品久久久久| 欧美激情91| 日韩欧美一区二区三区在线观看 | 亚洲三级国产| 91嫩草精品| 国产一区2区| 蜜桃视频欧美| 日本一区二区三区中文字幕| 精品精品99| 国产亚洲亚洲| 国产精品一区二区三区四区在线观看| 日本蜜桃在线观看视频| 久久亚洲国产精品一区二区| 国产极品一区| 国产亚洲福利| 精品丝袜久久| 香蕉成人久久| 国产精品极品| 在线国产一区二区| 国产香蕉精品| 婷婷成人综合| 97精品国产99久久久久久免费| 日韩深夜视频| 日韩在线黄色| 久久精品电影| 国产精品毛片aⅴ一区二区三区| 99精品在线观看| 国产精品久久久久久久久免费高清 | 精品国产一区二| 免费视频久久| 欧美精品导航| 欧美成a人免费观看久久| 久久人人88| 国产精品高清一区二区| 99热精品久久| 国产精品magnet|