24小时热门版块排行榜    

查看: 334  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xiezhancnu

木虫 (小有名气)

[求助] perl程序求助~ 已有2人参与

chr        start        end
chr10        2        4
chr1        2        3
chr3        2        4
chr1        1        2
chr2        1        3
chr10        3        5

排序成:
chr        start        end
chr1        1        2
chr1        2        3
chr2        1        3
chr3        2        4
chr10        2        4
chr10        3        5
首先按照第一列染色体顺序排chr1 chr2 ……chr9,chr10,chr11……chr21,chr22,chrX,chrY
相同染色体则按照位置的前后顺序进行排列。

先谢过!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

上官神速

新虫 (初入文坛)

【答案】应助回帖

@ARGV==1 || die "No way";
my ($text) = @ARGV;
my @tmp;
my $hd;
open($hd,"< $text" || die "can not open it";
while(<$hd>
{
      chomp;
          s/^\s+//g;
          s/chr//;
          s/\s+/-/;
          push(@tmp,$_);
}
my @sorted = sort {$a <=> $b } @tmp;
foreach(@sorted){s/\-/ /g;print "chr$_\n";}


结果:chr1 2        3
chr1 1        2
chr2 1        3
chr3 2        4
chr10 2        3
chr10 3        5
4楼2015-06-12 16:39:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

退化or进化

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
为什么要自己写perl脚本呢?Linux下的sort不就可以完成?或者更专业的用bedtools啊...
2楼2015-05-08 08:32:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

上官神速

新虫 (初入文坛)

【答案】应助回帖

@ARGV==1 || die "No way";
my ($text) = @ARGV;
my @tmp;
my $hd;
open($hd,"< $text" || die "can not open it";
while(<$hd>
{
      chomp;
          s/\s+//g;
          s/chr//;
          push(@tmp,$_);
}
my @sorted = sort {$a <=> $b } @tmp;
foreach(@sorted){s/(.*)([0-9])([0-9])$/$1 $2 $3/;print "chr$_\n";}
结果:
chr1 1 2
chr1 2 3
chr2 1 3
chr3 2 4
chr10 2 4
chr10 3 5
3楼2015-06-12 16:22:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见