Bam.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:SV2 作者: dantaki 项目源码 文件源码
def __init__(self,fh=None,Ped=None,gen=None):
        self.id = None
        self.chr_flag=False # True == 'chrN'; False == 'N'
        self.sex=None
        self.char='b'
        self.refs=OrderedDict()
        self.fh=fh
        self.Snv=None
        self.snv_index=None
        sm=[]
        bam = pysam.AlignmentFile(fh)
        if bam.is_cram==True: self.char='c'
        header = bam.header
        if header.get('RG')==None: sys.stderr.write('WARNING: {} lacks Read Group (@RG) entry in the header. Skipping ...\n'.format(fh))
        else:
            for entry in header['RG']:
                if entry.get('SM')!=None: sm.append(entry['SM'])
            sm = list(set(sm))
            if len(sm)>1: sys.stderr.write('WARNING: {} contains two sample entries ({}) in the header. Skipping {} ...\n'.format(fh,sm,fh))
            else: self.id=sm[0]
        if self.id!=None:
            if Ped.sex.get(self.id)==None: sys.stderr.write('WARNING: {} is not found in the PED file. Skipping {} ...\n'.format(self.id,fh))
            else:
                self.sex=Ped.sex[self.id]
                if str(bam.references[0]).startswith('chr'): self.chr_flag=True
                chroms = accepted_chrom(self.chr_flag,gen)
                for i in range(len(bam.references)):
                    chrom,leng = str(bam.references[i]),bam.lengths[i]
                    if chrom in chroms: self.refs[chrom]=int(leng)
        bam.close()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号