bed和gff文件按染色体号排序

注释文件通常按照染色体序号升序排列,而有时需要我们对获取的注释文件进行排序。对于chr01这种直接sort就可以,但是对于chr1, chr2… chr11这种,直接sort的结果是chr11排在chr2前面。解决这种情况的方法很简单,提取染色体中的数字,然后使用sort的-n参数就可以。而写成脚本复用起来也比较方便。
有些物种染色体命名可能特殊,所以line 24的正则匹配要针对不同情况修改。现在的脚本匹配染色体命名为Chr chr CHR。

#!/usr/bin/perl
# 2020-11-12
# sort bed or gff file

my $usage="Usage: $0 <file.bed or file.gff3>\n";
my $input;
my $tmp="./sortBedGFF_tmp01";

if(@ARGV==1){
    $input=shift @ARGV;
}
else{
    die "$usage\n";
}

open INPUT,$input or die "fileOpenError: unable to open $input\n";
open TMP,">".$tmp;
while(<INPUT>){
    chomp;
    my $line=$_;
    my @line=split "\t",$line;
    my $chr=$line[0];
    my $mod_chr;
    if($chr=~/[cC][hH][rR](\d+)/){
        $mod_chr=$1;
    }
    else{
        $mod_chr=$chr;
        print STDERR "error in line $.: chromosome name ($chr) not match regular expression, you may change $0 in line 24\n"
    }
    print TMP "$mod_chr\t$line\n";    
}
close INPUT;
close TMP;

my $outfile=$input;
if($input=~/bed/){
    $outfile=~s/bed/sorted.bed/g;
    system("sort -k 1n,1 -k 3n,4n $tmp | sed 's/^[0-9]*\t//g' > $outfile");
}
elsif($input=~/gff/){
    $outfile=~s/gff.*/sorted.gff/g;
    system("sort -k 1n,1 -k 5n,6n $tmp | sed 's/^[0-9]*\t//g' > $outfile");
}

unlink $tmp; #remove temporary file
print STDERR "Finished\n";
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用bedtools软件包中的命令将gff文件转换为bed文件。具体步骤如下: 1. 安装bedtools软件包。 2. 使用以下命令将gff文件转换为bed文件: ``` bedtools convert -i input.gff -o bed > output.bed ``` 其中,input.gff是输入的gff文件名,output.bed是输出的bed文件名。 如果需要转换特定类型的gff记录,可以添加`-t`选项和记录类型参数,例如: ``` bedtools convert -i input.gff -t exon -o bed > output.bed ``` 以上命令将只转换gff中的exon记录。 更多关于bedtools的用法详见官方文档:https://bedtools.readthedocs.io/en/latest/。 ### 回答2: gff文件bed文件是生物信息学领域中常用的两种文件格式,用于描述基因组的注释信息。 gff文件是一种文本文件,用来存储基因组的注释信息,其中每一行记录了一个基因或转录本的信息,包括位置、方向、类型以及其他相关注释。而bed文件也是一种文本文件,用来描述基因组的区域信息,包括染色体名称、起始位点、终止位点等。 要将gff文件转换为bed文件,可以按照以下步骤进行: 1. 打开gff文件,逐行读取每一条记录。 2. 解析每条记录的信息,提取出染色体名称、起始位点和终止位点等关键信息。 3. 将提取到的信息按照bed文件的格式进行整理,包括染色体名称、起始位点、终止位点等。 4. 将整理好的bed信息写入到新的bed文件中。 需要注意的是,由于gff文件bed文件的格式不同,需要进行信息的转换和整理。另外,还需要注意gff文件中的注释信息可能会有一些额外的字段,需要根据需要决定是否保留在转换后的bed文件中。 总之,将gff文件转换为bed文件需要逐行读取、解析和整理信息,并将结果写入新的文件中,以实现格式的转换和数据的转移。 ### 回答3: GFF(General Feature Format)文件BED(Browser Extensible Data)文件是两种常用的基因组注释文件格式。如果需要将GFF文件转换为BED文件,可以采用以下步骤: 1. 首先,打开GFF文件并读取其中的注释信息。GFF文件包含了每个特征的位置、类型、方向等信息。 2. 然后,创建一个新的BED文件,并按照BED文件的格式定义每一行的信息。BED文件通常包含三个列:染色体名称、起始位置、结束位置。 3. 对于每个注释特征,提取其染色体名称、起始位置和结束位置,并将其写入到BED文件对应的行中。 4. 保存并关闭BED文件,完成GFF文件BED文件的转换。 需要注意的是,GFF文件BED文件在注释信息上有所不同。GFF文件的注释信息更加详细,包含了更多的属性,如基因名称、外显子边界等。而BED文件只保留了最基本的位置信息。因此,在转换过程中,可能会有部分信息的丢失。 此外,也可以使用一些生物信息学软件或脚本来实现GFFBED的转换。常用的软件包括BEDTools、Bioconductor中的GenomicFeatures等,它们提供了一系列的函数和工具,能够方便地进行基因组注释文件的转换和处理。 总之,将GFF文件转换为BED文件可以通过解析GFF文件中的注释信息,并按照BED文件的格式重新组织和保存数据实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值