python的变量调用格式(vcf)解析器

PyVCF的Python项目详细描述


python的vcfv4.0和4.1解析器。


pyvcf文档的联机版本可在http://pyvcf.rtfd.org/

这个模块的目的是模拟python stdlib中的"csv"模块,
,而不是更灵活的序列化格式,如json或yaml。`` vcf``
将尝试基于元信息行中指定的数据类型
分析每个记录的内容,特别是info和
格式行。如果这些行丢失或不完整,它将对照规范中提到的保留类型检查
。否则,它将只返回字符串。

它接受类似于
对象的文件并充当读卡器::

>;>import vcf
>;>vcf reader=vcf.reader(open('vcf/test/example-4.0.vcf','r')
>;>vcf reader中的记录:
…打印记录
记录(chrom=20,pos=14370,ref=g,alt=[a])
记录(chrom=20,pos=17330,ref=t,alt=[a])
记录(chrom=20,pos=1110696,ref=a,alt=[g,t])
记录(chrom=20,pos=1230237,ref=t,alt=[none])
记录(chrom=20,pos=1234567,ref=gtct,alt=[g,gtact])



这会产生大量信息,但访问起来很方便。
记录的属性是vcf规范中的8个固定字段:

*``record.chrom`
*``record.pos`
*``record.id`
*``record.ref`
*``record.alt`
*``record.qual`
*``record.filter`
*`` record.info`

加上处理基因型信息的属性:

*`` record.format``
*`` record.samples``
*`` record.genelype``

`` samples``和`` genelype``,不是任何列的标题,都是小写的。固定字段的格式
来自规范。VCF中以逗号分隔的列表
转换为列表。特别是,一个条目vcf列表被转换为
一个条目python列表(参见,例如,``record.alt``)。以分号分隔的key=value对的列表
将转换为python字典,并为
指定一个"true"值。整数和浮点数的处理方式与您预期的完全一样:

>;>;vcf掴reader=vcf.reader(open('vcf/test/example-4.0.vcf','r')
>;>;record=next(vcf掴reader)
>;>;print record.pos
14370
>;>;打印记录。alt
[a]
>;>print record.info['af']
[0.5]


每个"记录"都有许多方便的方法和属性,允许您
检查感兴趣的属性:

>;31.0
>;>打印记录。num廑m廑u ref,record.num廑het,record.num廑m廑u alt
11
>;>打印记录。nucl廑u多样性,record.aaf,record。杂合度
0.6[0.5]0.5
>;打印记录。获取hets()
[调用(sample=na00002,calldata(gt=1 0,gq=48,dp=8,hq=[51,51])]
>;>打印记录。是snp,记录。是indel,记录。是转换,记录。是删除
true false
>;>打印记录。var类型,记录。var子类型
snp ts
>;>print record.is_monomorphic
false

``record.format``将是一个字符串,指定基因型
字段的格式。如果format列不存在,``record.format``是
``none`。最后,``record.samples``是一个字典列表,其中包含
已分析的样本列和'`record.genelype``是按样本名称查找基因型的一种方法:


>;>record=next(VCF_reader)
>;
>;用于记录中的样本。样本:
…打印样本['gt']
0 0
0 1
0/0
gt>>打印记录。基因型('na00001')['gt']
0 0


基因型由"call"对象表示,对象有三个属性:对应记录"site"、样本名"sample"和字典"data"中的调用数据:


>;call=record.genelype('na00001')
>;>;print call.site
记录(chrom=20,pos=17330,ref=t,alt=[a])
>;>print call.sample
na00001
>;>print call.data
calldata(gt=0 0,gq=49,dp=3,hq=[58,50])

``和上面的"gq"作为值返回。其他属性返回为列表(如上面的"hq")。



以下属性:

*`` reader.metadata`
*`` reader.infos`
*`` reader.filters``
*`` reader.formats``
*`` reader.samples`

例如::

>;vcf撸reader.metadata['filedate']
'20090805'
>;>VCF_reader.samples
['na00001','na00002','na00003']
>;>VCF_reader.filters
OrderedDict([('q10',filter(id='q10',desc='quality below 10'),('s50',filter(id='s50',desc='than 50%的samples have data')))))
>;>VCF_reader.infos['aa'].desc
"祖先等位基因"

alt记录实际上是类,因此您可以询问它们:

>;>reader=vcf.reader(open('vcf/test/example-4.1-bnd.vcf'))
>;>;record(chrom=1,pos=2,ref=t,alt=[t[2:3[])
>;>bnd=row.alt[0]
>;>gt;打印bnd.withinmanasembly,bnd.orientation,bnd.remoteorientation,bnd.connectingsequence
true false true t

这需要pysam模块作为
依赖项。传入染色体,并可选地传入起始和结束坐标,
用于感兴趣的区域:

>;>;
>;;从基1110696到1230237获取20号染色体上的所有记录
>;对于VCF_u reader.fetch('20',1110695,1230237)中的记录:doctest:+skip
…打印记录
记录(chrom=20,pos=1110696,ref=a,alt=[g,t])
记录(chrom=20,pos=1230237,ref=t,alt=[none])


请注意,开始和结束坐标在基于零的半开坐标系中,类似于"记录.开始"和"记录.结束"。染色体的第一个碱基是指数0,这个区域包括从
到的碱基,但不包括末端坐标处的碱基。例如::

>;>;从第11碱基到第20碱基取第4号染色体上的所有记录第4号染色体的索引19)。它不会
包括第21个基数(在指数20处)。(有关基于零的半开放坐标系的更多信息,请参见http://genomewiki.ucsc.edu/index.php/coordinate_transforms。)


"writer"类提供了一种编写VCF文件的方法。目前,您必须指定一个
模板"reader",它提供元数据:

>;>vcf reader=vcf.reader(filename='vcf/test/tb.vcf.gz')
>;>vcf writer=vcf.writer(open('/dev/null','w','vcf reader)
>;
…vcf_writer.write_record(record)

可扩展脚本可用于筛选vcf_filter.py中的vcf文件。其他包声明的vcf filters
可在此脚本中使用。有关详细说明,请参见:doc:`filters'。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Selenium运行ChromeDriver而不修改路径   java软件包sun。网www.protocol。https不可见   java AEM中的哪个类实现了javax。servlet。请求调度器接口?   在java/scala中读取zip或7z文件时的性能问题   java将一个文件写入另一个二进制文件   java在类本身中创建实例   Java中C#Action()委托的等价物?   java如何在任何类中使用@Context或类似工具获取ServletRequest?   重构(java)应该/如何重构此代码?   hibernate中的java TransientObject异常   gwt使用Java在CouchDB 2.0 fauxton中创建文档   xml错误Java Jersey:NotAuthorizedException:HTTP 401未经授权   java heroku错误:无法找到或加载主类   java从CAS 5.0检索已发布的属性。Spring Security中的x 3.2.5