Как классифицировать по одному столбцу в Perl - PullRequest
0 голосов
/ 20 апреля 2020

Я изучаю программирование генов perl. Мне немного сложно использовать Perl. Я сожалею о том, что я не очень хорош в Engli sh.

Я хочу классифицировать по одному столбцу в 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, ...

Пожалуйста, помогите мне. Спасибо.

1 Ответ

0 голосов
/ 20 апреля 2020

Мы можем использовать неявный l oop и режим автоматического разделения вместе с ха sh категорий и массивов для каждой категории. Это дает:

#!/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(", ", @{$_}), $/
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...