python提取GFF3文件信息

本文介绍如何使用Python脚本从GFF3文件中提取重复序列的种类、数量和bp数。通过读取文件的特定列,根据来源判断分类,统计各类重复序列的详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

因为最近使用REPET这个程序对基因组进行重复序列的注释,但是最后输出的结果是GFF3格式的文件,缺少统计信息。因此用python写了个脚本,对GFF3的信息进行提取并统计。

GFF3文件

想要从GFF3文件中提取的信息为重复序列的种类,数量,以及bp数。
GFF3文件分为9列,这次用到是第2、4、5、9列,分别代表来源,序列起始位置,结束位置,以及属性。
重复序列的种类可以从第9列属性中提取,bp数以(结束位置-起始位置+1)进行计算,数量则在过程中统计。

思路

按行读入GFF3文件,以”\t“符号分解。首先通过第2列,判断来源,有3种来源:
1. TEs
2. SSRs
3. blastx or tblasts

不同的来源,后缀不同,通过判断相应的字符串是否在第2列字符串中来判断是哪种来源。再通过第9列属性字符串,判断相应的分类代码字符串是否在其中,如果在其中,则将分类代码放入一个列表,然后以分类代码为键,bp数为值生成字典。
for循环不断读入,列表增长,字典合并,最后将列表唯一化,通过Counter类生成相应的字典,这个字典的值就是各分类的数量。

代码

生成字典是通过事先定义一个函数的方式实现的:

def return_TEs(lines):
    TEs=['RYX', 'RXX-LARD', 'RIX', 'RLX', 'RPX', 'RSX', 'RXX-TRIM', 'DYX', 'DHX',
    'DXX-MITE', 'DMX', 'DTX', 'RXX-chim', 'DXX-chim', 'noCat']
    (seqid, source, seqtype, start, end, score, strand, phase, attributes) =\
    lines.split('\t')
    te_len = int(end) - int(start) + 1
    for te in TEs:
        if te in attributes:
            return {te:te_len}

字典合并的函数:

#字典合并的函数&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值