统计基因组中repeat的种类和数量

1 使用shell grep命令统计(可得到每种类型的数量)

grep -v '^#' example.gff | cut -f 9 | cut -f 2 -d ';' | cut -f 2 -d '=' | sort | uniq -c >> output.txt

或者使excel中数据透视表的功能实现(对windows的要求较高)

2 统计每个CLASS类型的序列总长度

**awk '/LTR\/R1/ {sum += $5-$4} END {print "LTR/R1", sum > "output.txt"}' repeat.gff
awk 'BEGIN{FS="\t";OFS="\t"}NR==FNR{a[$1]=$5-$4;next}{if($1 in a){print $0,a[$1]}}' repeat.gff input.txt > output.txt**

/LTR/R1/(另一个斜杠需要加反斜杠)
这些均可使用处理大批数据的access或者power bi实现,excel可能会遗漏部分数据

3 使用python脚本实现

# 打开文件
with open('repeat.gff', 'r') as infile:
    # 初始化字典
    class_dict = {}
    # 逐行处理
    for line in infile:
        # 忽略注释行
        if line.startswith('#'):
            continue
        # 分割行数据
        cols = line.strip().split('\t')
        # 获取Class类型和序列长度
        class_type = cols[8].split(';')[1].split('=')[1]
        seq_len = int(cols[4]) - int(cols[3]) + 1
        # 累加序列长度
        if class_type in class_dict:
            class_dict[class_type] += seq_len
        else:
            class_dict[class_type] = seq_len

# 输出结果
for class_type, seq_len in class_dict.items():
    print(f"{class_type}\t{seq_len}")

以上代码来自于chatgpt,统计gff中其他类型数据的种类和数量可以通过修改该代码实现。

你可能感兴趣的:(统计基因组中repeat的种类和数量)