[英]How to categorizing by one column in Perl
我正在研究 perl 的基因编程。 使用 Perl 对我来说有点困难。 我很抱歉我英语不好。
我想按 perl 中的一列进行分类。
这是我的文件。 文件名为 Annuum.v.2.1.gff3
PGAv.1.6.scaffold1 PROTEIN gene 909002 910083 . + . ID=CA.PGAv.1.6.scaffold1.1
PGAv.1.6.scaffold1 PROTEIN mRNA 909002 910083 .+ ID=TC.CA.PGAv.1.6.scaffold1.1;Parent=CA.PGAv.1.6.scaffold1.1
PGAv.1.6.scaffold1 PROTEIN exon 909002 909168 . + 0 Parent=TC.CA.PGAv.1.6.scaffold1.1
PGAv.1.6.scaffold1 PROTEIN CDS 909002 909168 . + 0 Parent=TC.CA.PGAv.1.6.scaffold1.1
PGAv.1.6.scaffold1 PROTEIN exon 909759 910083 . + 1 Parent=TC.CA.PGAv.1.6.scaffold1.1
PGAv.1.6.scaffold1 PROTEIN CDS 909759 910083 . + 1 Parent=TC.CA.PGAv.1.6.scaffold1.1
PGAv.1.6.scaffold1 ISGAP gene 930723 931169 783 + . ID=CA.PGAv.1.6.scaffold1.2
PGAv.1.6.scaffold1 ISGAP mRNA 930723 931169 783 + . ID=TC.CA.PGAv.1.6.scaffold1.2;Parent=CA.PGAv.1.6.scaffold1.2
PGAv.1.6.scaffold1 ISGAP exon 930723 931169 . + . Parent=TC.CA.PGAv.1.6.scaffold1.2
PGAv.1.6.scaffold1 ISGAP CDS 930723 931169 . + . Parent=TC.CA.PGAv.1.6.scaffold1.2
我想按第二列分类,我想显示计数和 ID。 像下面这样。 我忘了…… 这些都是基因。
PROTEIN number CA.PGAv.1.6.scaffold1.1, CA.PGAv.1.6.scaffold1.3, ...
ISGAP number CA.PGAv.1.6.scaffold1.2, CA.PGAv.1.6.scaffold1.26, ...
请帮我。 谢谢。
我们可以将隐式循环和自动拆分模式与类别的 hash 和每个类别的 arrays 一起使用。 这给出了:
#!/usr/bin/perl -anF\t
next unless /ID=([^;]*)\n/; # process only lines with only ID
$categories{$F[1]} = 1; # remember category (field 1)
push @{$F[1]}, $1; # add item to the category's array
END { for (keys %categories)
{ $number = @{$_}; # number of items in category
print "$_\t$number\t", join(", ", @{$_}), $/
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.