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的更多相关文章

  1. the grave of my scripts

    不定期更新.......... 1,fetch_seq.py https://github.com/freemao/AHRD/blob/master/fetch_seq.py 提取出你想要得染色体的某 ...

  2. VCF文件处理工具PyVCF

    vcf格式示例 ##fileformat=VCFv4.1 ##FILTER=<ID=LowQual,Description=”Low quality”> ##FORMAT=<ID=A ...

  3. python调用py中rar的路径问题。

    1.python调用py,在py中的os.getcwd()获取的不是py的路径,可以通过os.path.split(os.path.realpath(__file__))[0]来获取py的路径. 2. ...

  4. Python导入其他文件中的.py文件 即模块

    import sys sys.path.append("路径") import .py文件

  5. import renumber.py in pymol

    cp renumber.py /usr/local/lib/python2.7/dist-packages/pymol import renumber or run /path/to/renumber ...

  6. python gettitle.py

    #!/usr/bin/env python # coding=utf-8 import threading import requests import Queue import sys import ...

  7. 解决 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 ...

  8. caffe机器学习自带图片分类器classify.py实现输出预测结果的概率及caffe的web_demo例子运行实例

    caffe机器学习环境搭建及python接口编译参见我的上一篇博客:机器学习caffe环境搭建--redhat7.1和caffe的python接口编译 1.运行caffe图片分类器python接口 还 ...

  9. 【转】Windows下使用libsvm中的grid.py和easy.py进行参数调优

    libsvm中有进行参数调优的工具grid.py和easy.py可以使用,这些工具可以帮助我们选择更好的参数,减少自己参数选优带来的烦扰. 所需工具:libsvm.gnuplot 本机环境:Windo ...

随机推荐

  1. 目前几款基于html5的前端框架:如Bootstrap、Foundation、Semantic UI 、Amaze UI

    Bootstrap是由Twitter在2011年8月推出的开源WEB前端框架,集合CSS 和HTML,使用了最新的浏览器技术,为快速WEB开发提供了一套前端工具包,包括布局.网格.表格.按钮.表单.导 ...

  2. Servlet作业--实现注册和登录

    1.注册页面  zhuce.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...

  3. HDU 1754 单点更新,求区间最大值

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. Countries in War (POJ 3114) Tarjan缩点+最短路

    题目大意: 在一个有向图中,每两点间通信需要一定的时间,但同一个强连通分量里传递信息不用时间,给两点u,v求他们最小的通信时间.   解题过程: 1.首先把强连通分量缩点,然后遍历每一条边来更新两个强 ...

  5. IE9的css hack

    以前写过<IE8的css hack>,ie9一出css hack也该更新,以前一直没关注,今天在内部参考群mxclion分享了IE9的css hack,拿出来也分享一下: select { ...

  6. LIS-Program E

    最大上升子序列 Description The world financial crisis is quite a subject. Some people are more relaxed whil ...

  7. Unity场景道具模型拓展自定义编辑器

    (一)适用情况 当游戏主角进入特定的场景或者关卡,每个关卡需要加载不同位置的模型,道具等.这些信息需要先在unity编辑器里面配置好,一般由策划干这事,然后把这些位置道具信息保存在文件,当游戏主角进入 ...

  8. 记录一些容易忘记的属性 -- UIImageView

    UIImage *image =  [UIImage imageNamed:@"back2.jpg"]; //创建一个图片对象,这个方法如果图片名称相同,不管我们调用多少次,得到的 ...

  9. 记录一些容易忘记的属性 -- UIGestureRecognize手势

    //一个手势只能添加到一个view上面 //设置当前手势需要的点击次数    _tapRec.numberOfTapsRequired = 1;//(默认为1)    //设置当前需要几个手指同时点击 ...

  10. 《day11---内部类&匿名内部类》

    //79-80-面向对象-内部类-体现 /* 当A类中的内容要被B类直接访问,而A类还需要去创建B类的对象,访问B的内容时, 这时可以将B类定义到A类的内部,这样访问更为便捷. 将B类称之为内部类(内 ...