2017-08-13 4 views
0

私はbiopythonモジュールBio/Graphics/BasicChromosome.pyで核型イメージを生成したいと思います。ここ は、このスクリプトは、PDF文書内の唯一のタイトル「テスト」で、空の図を生成し、私のコードpython3 renderPM(?)filehandle pb(via biopython)

import sys 
import pprint # debug 
from Bio.Graphics import BasicChromosome 


diagram = BasicChromosome.Organism() 
diagram.output_format = "pdf" 

# Ok, it works 
# diagram.draw("toto.pdf", "test") 

# this one fail. 
with open("toto.pdf", 'w') as o_out: 
    diagram.draw(o_out, "test") 

です。少なくともそれはすべきであり、実際にはpython2と同じです。 python3で

は、それが次のエラーで失敗します。もうファイルハンドルサポートされていないようだ

Traceback (most recent call last): 
    File "test_emptyKaryo.py", line 16, in <module> 
    diagram.draw(o_out, "test") 
    File "/usr/lib/python3/dist-packages/Bio/Graphics/BasicChromosome.py", line 161, in draw 
    return _write(cur_drawing, output_file, self.output_format) 
    File "/usr/lib/python3/dist-packages/Bio/Graphics/__init__.py", line 82, in _write 
    return drawmethod.drawToFile(drawing, output_file) 
    File "/usr/lib/python3/dist-packages/reportlab/graphics/renderPDF.py", line 298, in drawToFile 
    c.save() 
    File "/usr/lib/python3/dist-packages/reportlab/pdfgen/canvas.py", line 1237, in save 
    self._doc.SaveToFile(self._filename, self) 
    File "/usr/lib/python3/dist-packages/reportlab/pdfbase/pdfdoc.py", line 222, in SaveToFile 
    f.write(data) 
TypeError: write() argument must be str, not bytes 

。 私はそれがbiopythonエラーではないと思います。 誰でも私にそれを働かせる手がかりを与えることができますか?

出力形式をpngに変更すると、pdfはもはやインボリュートにならないので、renderPM.pyから来たと思います。

答えて

0

stringモードで開いたファイルオブジェクトに文字列オブジェクトを渡すか、binaryモードで出力ファイルを開きます(この場合は簡単です)。

with open("toto.pdf", 'wb') as o_out: 

はこのトリックを行う必要があります。