NCBIの遺伝子IDであるGI numberが2016年9月より段階的に廃止
参考記事: NCBI is phasing out sequence GIs - use Accession.Version instead!
タイトル通りNCBIの遺伝子IDとして長く利用されてきたGI numberが2016年9月より段階的に廃止されていくらしい。今後は以前よりGI numberと混在していたAccession numberがNCBIの遺伝子IDとして主に利用されていくようです。
前々から同じ遺伝子配列に対して2つの遺伝子IDが付加されているのは少し煩わしいなと感じていたので、新しく始める人にはわかりやすくなりそう。昔からやってる人にとっては若干の記述の変更のせいでプログラムの書き直しをする必要があったり面倒なこともあるかも。。。
たまに必要になりそうだったので、GI numberからAccession numberに自動変換するPerlスクリプトを書いてみた。
GI numberからAccession numberへ変換するプログラム(gi2acc.pl)
#!/usr/bin/perl # Command usage: # $ perl gi2acc.pl [$gi_infile] [$acc_outfile] # # Function: # Convert "gi number" => "accession number" # use strict; use warnings; use LWP::Simple; my ($gi_infile, $acc_outfile) = @ARGV; gi2acc($gi_infile, $acc_outfile); sub gi2acc{ my ($gi_infile, $acc_outfile) = @_; my @gi_ary; open(FILE,$gi_infile); while(<FILE>){ chomp; push @gi_ary, $_ unless($_ eq ""); } close(FILE); my $acc_outinfo; while(@gi_ary != 0){ my @limit_gi; # 500 is restricted number per one submission for(my $i = 0; $i < 500; ++$i){ my $gi = shift @gi_ary; push @limit_gi, $gi if($gi); } $acc_outinfo .= get("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=protein&rettype=acc&id=". join(",",@limit_gi)); } open(NEW,">$acc_outfile"); print NEW $acc_outinfo; close(NEW); }
プログラム実行例
$ perl gi2acc.pl ncbi_gi.txt ncbi_acc.txt
下記のような、GI numberが記述されたファイル(ncbi_gi.txt)を読み込んで、対応するAccession numberが記述されたファイル(ncbi_acc.txt)を出力する。
ncbi_gi.txt
1024336731 1024336729 1024336727 1024336725 1024336723
ncbi_acc.txt
NP_001311272.1 NP_001311286.1 NP_001311302.1 NP_001311298.1 NP_001311292.1