Как мне решить эту загадку, связанную с BioPerl?

Я использую Ubuntu 10.04 и Perl 5.10.1. В пакете BioPerl есть несколько хороших скриптов, таких как bp_genbank2gff3.pl, который конвертирует файлы из формата genbank в формат GFF3.

Проблема: я получаю неожиданные результаты при использовании bp_genbank2gff3.pl: свойства гена получают "Name=" вместо "locus_tag=" в последнем столбце GFF3.

Уважаемый участник списка рассылки BioPerl сказал мне, что он использует последнюю версию BioPerl из репозитория BioPerl и получает правильный результат ("locus_tag="). Я получил свежую копию, но она мне не подошла. Странный!

Действия по воссозданию ситуации:

$ cd ~/src
$ git clone http://github.com/bioperl/bioperl-live.git
$ export PERL5LIB="$HOME/src/bioperl-live:$PERL5LIB"
$ cd /tmp
$ wget ftp://ftp.ncbi.nih.gov/genomes/Bacteria/Escherichia_coli_E24377A/NC_009789.gbk
$ ~/src/bioperl-live/scripts/Bio-DB-GFF/genbank2gff3.PLS NC_009789.gbk

Ниже приведена строка № 8 из полученного GFF3:

NC_009789    GenBank    gene    665    781    .    -    1    ID=EcE24377A_B0001;Dbxref=GeneID:5585816;Name=EcE24377A_B0001

в то время как это та же строка из результатов моего коллеги:

NC_009789    GenBank    gene    665    781    .    -    1    ID=EcE24377A_B0001;Dbxref=GeneID:5585816;**locus_tag**=EcE24377A_B0001

Обратите внимание, что тег "Name=" в моей версии (в конце строки) заменен на "locus_tag=" в версии моего коллеги. Я понятия не имею, что здесь происходит... Тот же ввод, предположительно тот же скрипт, но разные результаты (вывод, который получает мой коллега, является желаемым). Мы даже diff отредактировали идентичные сценарии (genbank2gff3.PLS).

Любые идеи? Может ли кто-нибудь увидеть, получает ли он те же результаты, что и я или мой коллега?


person David B    schedule 18.09.2010    source источник
comment
;) - не то, чтобы это имело значение - просто хотел бы я узнать больше о пакете BioPerl   -  person vol7ron    schedule 19.09.2010


Ответы (1)


Глядя на исходник скрипта:

#?? should gene_name from /locus_tag,/gene,/product,/transposon=xxx
# be converted to or added as  Name=xxx (if not ID= or as well)
## problematic: convert_to_name ($feature); # drops /locus_tag,/gene, tags
convert_to_name($feature); 

И в convert_to_name:

elsif ($g->has_tag('locus_tag')) {
    ($gene_id) = $g->get_tag_values('locus_tag');
    $g->remove_tag('locus_tag');
    $g->add_tag_value('Name', $gene_id);
}

Получается, что скрипт делает то, что должен?

person zoul    schedule 18.09.2010
comment
то, что сценарий должен делать, является спорным. Я думаю, что он должен включать тег locus_tag_, если он существует. Все началось, когда я хотел попросить добавить эту функцию, и когда кодеры bioperl сказали мне, что для него это уже так (т.е. показаны теги локуса). Вопрос в том, кто ошибся... Я просто хочу убедиться, что со мной не что-то не так. - person David B; 18.09.2010