pybedtools文档--概述

BedTools被广泛应用于基因组数据的区间操作。而pybedtools则扩增bedtools的功能,并将其包装成python可用的特征水平操作。

全部的在线文档见:http://daler.github.io/pybedtools/

为什么选择pybedtools?

以下是一个如何获取基因间SNP在5kb以内的基因名称的例子。

from pybedtools import BedTool

snps = BedTool('snps.bed.gz') # [1]

genes = BedTool('hg19.gff') # [1]

intergenic_snps = snps.subtract(genes) # [2]

nearby = genes.closest(intergenic_snps, d=True, stream=True) # [2, 3]

for gene in nearby: # [4]

    if int(gene[-1]) < 5000: # [4]

    print gene.name # [4]

使用到的特征概括如下:

[1] 支持所有BEDTools支持的格式 (例子中的是gzipped BED和GFF)

[2] 对所有BEDTools的程序和参数(例子中的是subtract、closest 以及将e -d flag参数传递到closest);

[3] 传递结果(例如 Unix pipes, 在本例子中是stream=True)

[4] 通过参数例获取数据的特性声明结果中各种特征 (在此时 [-1] and .name)

以下,是使用shell脚本进行相同的分析。值得注意的是这个是需要perl,bash,awk的知识的,而运行时间与pybedtools相同。

snps=snps.bed.gz

genes=hg19.gff

intergenic_snps=/tmp/intergenic_snps

snp_fields=`zcat $snps | awk '(NR == 2){print NF; exit;}'`

gene_fields=9

distance_field=$(($gene_fields + $snp_fields + 1))

intersectBed -a $snps -b $genes -v > $intergenic_snps

closestBed -a $genes -b $intergenic_snps -d \

| awk '($'$distance_field' < 5000){print $9;}' \

| perl -ne 'm/[ID|Name|gene_id]=(.*?);/; print "$1\n"'

rm $intergenic_snps

.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,486评论 0 10
  • ANNOVAR的安装 ANNOVAR网址 log in之后才能download,使用教育机构后缀的邮箱即可注册。 ...
    面面的徐爷阅读 23,137评论 1 26
  • 古代杂交事件为慈鲷科鱼类的适应辐射提供动力 Ancient hybridization fuels rapid c...
    智取鸟氨酸阅读 4,746评论 0 5
  • 入门 awk的基本命令格式 awk 'pattern{action}',省略action时,默认action是{p...
    琼脂糖阅读 803评论 0 0
  • grep:最快的文本搜索工具 grep就是在文本提取和匹配上最快的工具,因为它只有一个目标,在每一行找匹配的内容,...
    xuzhougeng阅读 3,428评论 0 17