vcf文件是生物信息学对SNP和indel进行数据分析不可绕开的一种文件格式,但是作为一种不常见的文件格式,我们时常需要对其编写代码来对其进行读取。

class Record(object):'''One line information in vcf file'''def __init__(self, line):info = line.split("\t")self.line = lineself.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) -7self.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.recordelse:self.reader.close()raise StopIteration()def reader_close(self):self.reader.close()

通过这个类我们可以对vcf文件进行读取。
粗略地看似乎没有什么问题,但是运行起来就会报出一个错误。`

这个错误表示列表中只有一个元素。 但是这非常奇怪 ,因为我们所知vcf文件有非常多的数据,如CHROM,ID,POS,REF等等等。
原因在于,虽然我们看上去这个文件有许多的列,每一列是由空格分隔。但事实上把这些文件放入excel中我们就可以知道,这每一行的所有数据其实都只是放在了excel表格的第一个格子中。因此利用这个类读取vcf数据,list[0]不会报错,而list[1]开始就没有数据了。
所以还是乖乖地用pyvcf这个库吧!

关于vcf文件的读取相关推荐

  1. python提取文本中的手机号_Python从vcf文件中读取手机号并进行去重操作

    文章目录 1. Python代码 file = open('test.vcf', 'r', encoding='utf-8') tels = [] for line in file: line = l ...

  2. android通讯录操作批量查询删除更新头像vcf文件写入读取便捷方法

    读取本地通讯录: private List<PhoneModel> getLocalData2() {List<PhoneModel> mapLoc = new LinkedL ...

  3. java利用io流读取文件发生了乱码以及java解析vcf文件

    如果文件中含有中文字符,那么这时候直接进行读取,即new FileInputStream(要读取的文件),就会出现了乱码,所以这时候,我们需要设置对应的格式进行读取,所以还需要传递对应的编码,所以将代 ...

  4. R语言丨根据VCF文件自动填充对其变异位点并生成序列fa文件

    根据VCF文件自动填充对其变异位点并生成序列fa文件 首先提出一个问题: 假如有一个重测序结果VCF文件,里面包含了很多个样本在几百个突变位点(snp和iad)的基因型数据,现在想根据这份原始数据,得 ...

  5. Python 导出手机通讯录文件 VCF 文件中的手机号码

    文章目录 Python 导出手机通讯录文件 VCF 文件中的手机号码 1.代码 Python 导出手机通讯录文件 VCF 文件中的手机号码 1.代码 if __name__ == '__main__' ...

  6. 阿里云ECS云服务器Windows如何通过IIS配置网站支持flv、mp4等文件访问读取

    阿里云ECS云服务器Windows 如何通过IIS配置网站支持flv,mp4等文件访问读取,通过IIS配置的网站,如果需要播放一些例如flv.mp4的特殊文件,需要在站点配置中添加自定义MIME类型, ...

  7. 利用PyVCF模块处理VCF文件

    利用PyVCF模块处理VCF文件 转载自:微信公众号 生信说 欢迎大家扫码关注 工欲善其事,必先利其器. VCF,全称Variant Call Format,是生物信息学领域最常用的遗传突变存储格式. ...

  8. Android vcard使用示例,生成vcf文件

    我们备份手机联系人时,导出到SD卡时,会在SD卡中生成一个vcf文件,用于保存联系人姓名,手机号码. vCard 规范容许公开交换个人数据交换 (Personal Data Interchange P ...

  9. vc++从txt文件中读取数据

    数值分析课上老师说要将数据写在txt文件上,然后让程序从txt文件中读取数据.让本来C++已经遗忘了很久的我们无从下手,在网上也查看了很多,发现大多都是扯淡,放在VC++编辑器上发现并不能运行,不知道 ...

  10. android中XMl文件的读取

    废话不多说了直接上代码: 新建一个Xml文件用于读取: test.xml <Languages cat="1"><lan id="1"> ...

最新文章

  1. [转]实现Python HTTP服务方法大总结
  2. bzoj3211,bzoj3038
  3. css expressionr,CSS自定义属性expression_r
  4. .NET设计模式(3): 抽象工厂模式
  5. 麦肯锡160页报告:2030年全球将可能有8亿人要被机器抢饭碗
  6. 嵌入式linux中文语言支持,嵌入式linux无法显示中文问题
  7. .net core linux 界面,C# dotnet core + AvaloniaUI 开发桌面软件,hello world
  8. 小王Java学习打卡day07——模板方法设计,接口,多态
  9. 树莓派 使用xbox360手柄
  10. 百合佳缘伐谋、珍爱网伐交、伊对伐兵
  11. 用Matlab把SMAP vegetation optical depth (VOD)数据转换成带投影信息EASE GRID2的tif文件
  12. ios swift判断两个对象是否相等 == isEqual remove add
  13. WEB前端打开摄像头
  14. 影之刃服务器维护,影之刃无法联机到服务器怎么办 解决办法
  15. python reset_index()_python 问题 reset_index(drop=True
  16. Python 编程辅助工具--ipython
  17. 腾讯地图标注_怎样在导航地图上标注公司名和位置
  18. Depth-wise separable convolution 深度可分卷积
  19. BERT and it‘s family
  20. 让Onedrive云盘同步本地任意一个文件夹(适用于Windows)

热门文章

  1. burst传输 - 理解
  2. 名师出高徒!请关注领英上这十位活跃的大神
  3. 全网通工业无线路由器多网口工业路由器
  4. 密码学大事件! SHA-1 哈希碰撞实例
  5. 【npm】伙计,给我来一杯package.json!不加糖
  6. 基于jenkins进行定制化开发
  7. 小米手环如何连接苹果手机
  8. 2022-08-01 网工进阶(二十四) STP进阶知识
  9. SpringBooot:Redis:根据两地经纬度计算距离
  10. Windows提权—进程注入、Unattended Installs提权