これは実際には有効な解決策ではありませんが、問題が何であるかを示しています。おそらく biopython (Entrez.Parse) のバグだと思うので、彼らに連絡してどう思うか見てみます。
そのため、Biopython で少しハッキングすると、問題は「ビルド」タグ名が原因であることがわかります。
これを手動で行うと、XML リクエストの最初の数行は次のpubmed
ようになります。
<eInfoResult>
<DbInfo>
<DbName>pubmed</DbName>
<MenuName>PubMed</MenuName>
<Description>PubMed bibliographic record</Description>
<Count>22224084</Count>
<LastUpdate>2012/10/30 03:30</LastUpdate>
....
しかし、タンパク質要求は次のようになります。
<eInfoResult>
<DbInfo>
<DbName>protein</DbName>
<MenuName>Protein</MenuName>
<Description>Protein sequence record</Description>
<Build>Build121030-0741m.1</Build> <-------- THIS IS BAD
<Count>59244879</Count>
<LastUpdate>2012/10/30 18:39</LastUpdate>
Entrez.Parser がどのように機能するかを調べましたが、基本的にbuild
タグを認識しません。さらにルート化すると、タグがDTDファイルとeinfo DTDファイルで定義されていることがわかります。これは私のシステムではここにあります。
/usr/local/lib/python2.7/dist-packages/Bio/Entrez/DTDs
関連するファイルを調べてeInfo_020511.dtd
ビルド タグ行を追加すると (下の矢印付きの行は以前にはありませんでした);
<!--
This is the Current DTD for Entrez eInfo
$Id: eInfo_020511.dtd,v 1.1 2008-05-13 11:17:44 mdehoon Exp $
-->
<!-- ================================================================= -->
<!ELEMENT DbName (#PCDATA)> <!-- \S+ -->
<!ELEMENT Name (#PCDATA)> <!-- .+ -->
<!ELEMENT FullName (#PCDATA)> <!-- .+ -->
<!ELEMENT Description (#PCDATA)> <!-- .+ -->
<!ELEMENT Build (#PCDATA)> <!-- .+ --> <------- I ADDED THIS LINE
<!ELEMENT TermCount (#PCDATA)> <!-- \d+ -->
<!ELEMENT Menu (#PCDATA)> <!-- .+ -->
それは今動作します。このファイルのコメントは、2008 年以降更新されていないことを示しています (以下の行は DTD ヘッダーから来ています)。
$Id: eInfo_020511.dtd,v 1.1 2008-05-13 11:17:44 mdehoon Exp $
それ以来ビルドタグが追加されていると思いますが、このファイルはそれを反映するように更新されていません。