美文网首页数据处理与作图/系统发育
统计基因组中repeat的种类和数量

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

作者: 徒唤奈何_c5f0 | 来源:发表于2023-03-26 10:13 被阅读0次

    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的种类和数量

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