vcf_filter.py
pyvcf 中带的一个工具 比其他工具用着好些 其他filter我很信不过~~ 自己写的功能又很有限 所以转投vcf_filter.py啦
Filtering a VCF file based on some properties of interest is a common enough operation that PyVCF offers an extensible script. vcf_filter.pydoes the work of reading input, updating the metadata and filtering the records.
usage: vcf_filter.py [-h] [--no-short-circuit] [--no-filtered]
[--output OUTPUT] [--local-script LOCAL_SCRIPT]
input filter [filter_args] [filter [filter_args]] ...
Filter a VCF file
positional arguments:
input File to process (use - for STDIN) (default: None)
optional arguments:
-h, --help Show this help message and exit. (default: False)
--no-short-circuit Do not stop filter processing on a site if any filter
is triggered (default: False)
--output OUTPUT Filename to output [STDOUT] (default: <open file
'<stdout>', mode 'w' at 0x2b0f9435c150>)
--no-filtered Output only sites passing the filters (default: False) # 如果不加这个参数,不通过的位点也会被保留下来,只不过在filter列有相应说明!
--local-script LOCAL_SCRIPT
Python file in current working directory with the
filter classes (default: None)
sq:
Filter low quailty sites
--site-quality SITE_QUALITY
Filter sites below this quality (default: 30)
dps:
Threshold read depth per sample
--depth-per-sample DEPTH_PER_SAMPLE
Minimum required coverage in each sample (default: 5)
avg-dps:
Threshold average read depth per sample (read_depth / sample_count)
--avg-depth-per-sample AVG_DEPTH_PER_SAMPLE
Minimum required average coverage per sample (default:
3)
eb:
Filter sites that look like correlated sequencing errors. Some sequencing
technologies, notably pyrosequencing, produce mutation hotspots where
there is a constant level of noise, producing some reference and some
heterozygote calls. This filter computes a Bayes Factor for each site by
comparing the binomial likelihood of the observed allelic depths under: *
A model with constant error equal to the MAF. * A model where each sample
is the ploidy reported by the caller. The test value is the log of the
bayes factor. Higher values are more likely to be errors. Note: this
filter requires rpy2
--eblr EBLR Filter sites above this error log odds ratio (default:
-10)
snp-only:
Choose only SNP variants
mgq:
Filters sites with only low quality variants. It is possible to have a
high site quality with many low quality calls. This filter demands at
least one call be above a threshold quality.
--genotype-quality GENOTYPE_QUALITY
Filter sites with no genotypes above this quality
(default: 50)
懒得翻译 自己看吧
注意,里面有默认值:
比如sq 默认30, dps 默认5, avg-dps 默认3, eblr 默认-10, mgq默认50.
但是经过测试, 不指定的话, 好像也不会针对这些项进行过滤, 所以还是指定的好!
下面举一些具体的例子:
vcf_filter.py testfilter.vcf sq 30 > testfilter30.vcf
会发现结果文件中,不满足要求的在filter列显示的是sq30, 满足过滤条件的显示的是PASS.

经观察sq参数是准确可靠地。
vcf_filter.py testfilter.vcf sq --site-quality 30 dps --depth-per-sample 10 > testfilter30_10.vcf
对sq 30 和 dps10 进行过滤:
发现虽然有的dp是小于10的但让然被PASS了,这很尴尬。。。由于我过滤的条件有两个,但是在filter那列,如果两个条件都不满足,只会显示其中一个条件不满足,而没有第二个条件不满足的信息并不会出现。

下面单独测试一下dps:
vcf_filter.py testfilter.vcf dps --depth-per-sample 10 > testfilter10.vcf

说明dps确实有问题。更郁闷的是不仅有些小于10的不会被过滤掉,连大于10的竟然却被过滤掉了。上图中DP=58被过滤掉了。。。。呵呵了 dps压根不用就是了。
下面单独测试一下avg-dps:
vcf_filter.py testfilter.vcf avg-dps --avg-depth-per-sample 10 > testfilteravg_10.vcf

经测试avg-dps是准确的,其实这个参数正是我们需要的,只要控制了每个样的深度,总的深度也会得到控制,若avg-dps为10, 也就是说总深度我们控制到了30.静平也测试了一下, 发现avg-dps也准确:
这个脚本就avg-dps可以用, 但是不符合我的需要,因为如果三个样本的深度分别是20 5 5 这种情况也满足于avg-dps为10,。
by freemao
FAFU
free_mao@qq.com
vcf_filter.py的更多相关文章
- the grave of my scripts
不定期更新.......... 1,fetch_seq.py https://github.com/freemao/AHRD/blob/master/fetch_seq.py 提取出你想要得染色体的某 ...
- VCF文件处理工具PyVCF
vcf格式示例 ##fileformat=VCFv4.1 ##FILTER=<ID=LowQual,Description=”Low quality”> ##FORMAT=<ID=A ...
- python调用py中rar的路径问题。
1.python调用py,在py中的os.getcwd()获取的不是py的路径,可以通过os.path.split(os.path.realpath(__file__))[0]来获取py的路径. 2. ...
- Python导入其他文件中的.py文件 即模块
import sys sys.path.append("路径") import .py文件
- import renumber.py in pymol
cp renumber.py /usr/local/lib/python2.7/dist-packages/pymol import renumber or run /path/to/renumber ...
- python gettitle.py
#!/usr/bin/env python # coding=utf-8 import threading import requests import Queue import sys import ...
- 解决 odoo.py: error: option --addons-path: The addons-path 'local-addons/' does not seem to a be a valid Addons Directory!
情况说明 odoo源文件路径-/odoo-dev/odoo/: 我的模块插件路径 ~/odoo-dev/local-addons/my-module 在my-module中创建了__init__.py ...
- caffe机器学习自带图片分类器classify.py实现输出预测结果的概率及caffe的web_demo例子运行实例
caffe机器学习环境搭建及python接口编译参见我的上一篇博客:机器学习caffe环境搭建--redhat7.1和caffe的python接口编译 1.运行caffe图片分类器python接口 还 ...
- 【转】Windows下使用libsvm中的grid.py和easy.py进行参数调优
libsvm中有进行参数调优的工具grid.py和easy.py可以使用,这些工具可以帮助我们选择更好的参数,减少自己参数选优带来的烦扰. 所需工具:libsvm.gnuplot 本机环境:Windo ...
随机推荐
- vim命令/压缩和解压命令
gzip命令 -d 解压 -# 1 为最快 但容量问题 . 9为最好 .6为默认 gzip install.log 比较好理解,windows里面类似的,记住zip 和unzip是可以目录或者文件解 ...
- webApi跨域
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Contro ...
- BindingNavigator操作DatagridView的数据
参考 http://wenku.baidu.com/link?url=NWfEfArPZvDO_aI-xEKBHVGoZY9wQO_Oty_GCsGLiPspheCzFYLf_dytuWAqN2_0A ...
- 2、IValueConverter应用
1.C#代码如下: public class logotoimgConverter:IValueConverter { //将logo转换为URI public object Convert(obje ...
- POJ 1741 树的点分治
题目大意: 树上找到有多少条路径的边权值和>=k 这里在树上进行点分治,需要找到重心保证自己的不会出现过于长的链来降低复杂度 #include <cstdio> #include & ...
- vue js 用nodejs的依赖包 --2016-08-23
今天被nodejs包依赖坑了一下,上次上传的项目突然运行不起来了,原来是package.json中定义了使用最新版本的依赖,而最新版本有可能调整了结构或者改了api,比如vux把flexbox-it ...
- C/C++遍历Windows文件夹下的所有文件
因为文件夹中往往包含文件和文件夹.想要遍历所有的文件,必须遍历文件夹中所有的文件夹.很显然,这个描述满足递归的两个要素:(1)问题的规模在不断的缩小,且新问题的模式与旧问题相同.很显然文件夹中含有子文 ...
- 通过使用ScriptManager.RegisterStartupScript,呈现后台多次使用alert方法
在前台HTML中加入alert或者confirm,相信大家已经非常熟悉并且经常使用: <div onclick="alert('hello')">按钮1</div ...
- 1.6 suid/guid
1.很系统供应商不允许使用这一命令,或者即使被置位,也会被忽略,这一命令会带来安全性风险. suid意味着该用户对自己的shell脚本设置了这种权限,那么其他用户执行该脚本时,也将拥有该用户相同的权限 ...
- java generic type
java generic type: 类型安全.类型参数化.不需要强制转换