Как мне решить эту загадку, связанную с BioPerl? - PullRequest
2 голосов
/ 18 сентября 2010

Я использую 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 ="). Я получил свежую копию, но она не сработала для меня. Weird!

Шаги по воссозданию ситуации:

$ 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), которые идентичны.

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

1 Ответ

3 голосов
/ 18 сентября 2010

Просмотр источника сценария :

#?? 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);
}

Значит, похоже, что скрипт делает то, что должен?

...