美文网首页DNase-seq
samtools depth 处理bed文件

samtools depth 处理bed文件

作者: 线断木偶人 | 来源:发表于2019-05-13 18:06 被阅读0次

samtools depth 得到文件

awk '{if($3 >60 ) print }' depth.txt > 50.txt
head -20 50.txt
image.png

写个脚本处理下

import re
import sys
import linecache

file=sys.argv[1]

with open(file,'r') as f:
    #lines = f.readlines()
    #last_line = lines[-1]
    for line in f:
        line = line.strip()
        line=line.split('\t')

        #if chr is None and POST is None:
        # 判断chr 是否存在
        if 'chr' not in dir():
            chr = line[0]
            POST = line[1]

        if line[0] == chr:
            if line[1] == POST:
                first = line[1]
                print (line)

            elif int(line[1]) == int(POST) + 1:
                chr = line[0]
                POST = line[1]
                end = line
                #continue
            #elif
            else :
                print ('%s\n%s' %(end,line))
                #print (end)
                #print (line)
                POST = line[1]
        else:
            print (end)
            chr = line[0]
            POST = line[1]
            print (line)

f = open(file,'r')
linecount=len(f.readlines())
#print (linecount)
print (linecache.getline(file,linecount).strip().split('\t'))
f.close()

执行下脚本,生成out文件

python deal.py 50.txt > out

处理下out文件,把改删除的删掉,最后执行

cat out | paste - - | awk '{print $1,$2,$5}' OFS="\t" >final.bed

或者这样写

import re
import sys
from itertools import groupby

file=sys.argv[1]
dict={}

def addtodict2(thedict, key_a, key_b, val):
    if key_a in thedict:
        thedict[key_a].update({key_b: val})
    else:
        thedict.update({key_a:{key_b: val}})


with open(file,'r') as f:
    for line in f:
        line = line.strip()
        line=line.split('\t')

        if 'chr' not in dir():
            chr = line[0]
        #list.append(int(line[1]))
        addtodict2(dict, line[0], line[1], 1)

#print (dict.items())
for key1 in dict:
    list = key1
    list = []
    for key2 in dict[key1]:
        list.append(int(key2))

    list.sort()
    fun = lambda x: x[1] - x[0]
    for k, g in groupby(enumerate(list), fun):
        #print ([v for i, v in g])
        zzz = [v for i, v in g]
        if len(zzz) > 3:
            print ('%s\t%s\t%s' %(key1,zzz[0],zzz[-1]))

相关文章

  • samtools depth 处理bed文件

    samtools depth 得到文件 写个脚本处理下 执行下脚本,生成out文件 处理下out文件,把改删除的...

  • Samtools统计测序深度

    用法1:利用-b 制作bed位置文件,在单个样本中计算这些位置的深度。 Usage: samtools depth...

  • 收集 | 序列提取工具

    1.BED格式相关的提取 bedtools 最知名的bed文件相关工具,但是和samtools并非出自一家 htt...

  • 2020-07-29

    samtools-1.7/samtools stats -@ 4 -t tmp.hg38.bed R01071...

  • bedtools coverage 和 samtools bed

    最近需要将bam文件映射到bed上并统计,一番尝试操作之后发现:貌似samtools bedcov 和 bedto...

  • samtools 工具处理SAM文件

    SAM 是用来存储核苷酸序列比对信息的文件格式。SAM Tools 工具包提供各种工具处理SAM文件。包括功能:s...

  • 转录组入门学习(五)

    表达定量 1. 处理原始比对文件 利用 picard / samtools 将 sam 格式转换为 bam 格式 ...

  • BCFtools常规使用

    BCFtools可用于处理VCF和BCF文件;具体可参考BCFtools说明文档[http://samtools....

  • samtools软件的使用

    常用samtools的命令: samtools view命令:查看sam,bam文件,进行sam及bam文件的转换...

  • pysam的使用

    本文来源于panxiaoguang.github.io samtools是我们比较常用的处理bam文件的软件,但很...

网友评论

    本文标题:samtools depth 处理bed文件

    本文链接:https://www.haomeiwen.com/subject/qpvraqtx.html