Edinburgh-Genome-Foundry / DnaFeaturesViewer

:eye: Python library to plot DNA sequence features (e.g. from Genbank files)
https://edinburgh-genome-foundry.github.io/DnaFeaturesViewer/
MIT License
584 stars 90 forks source link

Error when trying example scripts #3

Closed ghost closed 7 years ago

ghost commented 7 years ago

I am running python 2.7 on macOS. When I want to try the example script, i.e. from_genbank.py, I get the following error:

Traceback (most recent call last): File "with_plot.py", line 11, in <module> ax, levels = graphic_record.plot() File "/Library/Python/2.7/site-packages/dna_features_viewer/dna_features_viewer.py", line 234, in plot box_linewidth=box_linewidth, box_color=box_color File "/Library/Python/2.7/site-packages/dna_features_viewer/dna_features_viewer.py", line 207, in annotate_feature x1, y1, x2, y2 = get_text_box(text, margin=margin) File "/Library/Python/2.7/site-packages/dna_features_viewer/utils.py", line 39, in get_text_box renderer = text.axes.figure.canvas.get_renderer() AttributeError: 'FigureCanvasMac' object has no attribute 'get_renderer' Tobiass-Air:examples Tobias$ python from_genbank.py Traceback (most recent call last): File "from_genbank.py", line 3, in <module> graphic_record = BiopythonTranslator().translate_record("example_sequence.gb") File "/Library/Python/2.7/site-packages/dna_features_viewer/dna_features_viewer.py", line 468, in translate_record return grecord_class(sequence_length=len(record.seq), features=[ AttributeError: 'str' object has no attribute 'seq'

The other example scripts do not work either.

Zulko commented 7 years ago

Weird, they work fine on my machine (and in the test suite). What command/code exactly are you running ? And what version of DnaFeatureViewer ? Did you install from pip or github ? (although both should work)

ghost commented 7 years ago

When I run python tests/test_basics.py, there is no error, but also no output. when I run python examples/from_genbank.py, I get the error posted above.

Zulko commented 7 years ago

For the tests, it is normal that there is mno output. For the examples, that may be because you need to be in the "examples" to run them.

cd examples
python from_genbank.py
ghost commented 7 years ago

I still get the same error

Zulko commented 7 years ago

After a second look at your error I get the problem, it seems to be a Matplotlib/Mac issue, the Matplotlib canvas should have a "get_renderer" attribute that your graphic backend (called "FigureCanvasMac") doesn't have. What version of matplotlib do you have ?

python -c "import matplotlib; print matplotlib.__version__"
ghost commented 7 years ago

1.3.1

Zulko commented 7 years ago

That version if from 4 years ago, we may have something there. Can you try upgrading it ? This should install matplotlib 2.x (which as far as i know is retro-compatible so you shouldn't have trouble with other projects):

sudo pip install --upgrade matplotlib
ghost commented 7 years ago

upgrading matplotlib helped running by_hand.py and with_plot.py, but from_genbank.py still produces following error:

Traceback (most recent call last):
  File "from_genbank.py", line 3, in <module>
    graphic_record = BiopythonTranslator().translate_record("example_sequence.gb")
  File "/Library/Python/2.7/site-packages/dna_features_viewer/dna_features_viewer.py", line 468, in translate_record
    return grecord_class(sequence_length=len(record.seq), features=[
AttributeError: 'str' object has no attribute 'seq'
Tobiass-Air:examples Tobias$ python from_genbank.py 
Traceback (most recent call last):
  File "from_genbank.py", line 3, in <module>
    graphic_record = BiopythonTranslator().translate_record("example_sequence.gb")
  File "/Library/Python/2.7/site-packages/dna_features_viewer/dna_features_viewer.py", line 468, in translate_record
    return grecord_class(sequence_length=len(record.seq), features=[
AttributeError: 'str' object has no attribute 'seq'`

and running plot_with_bokeh.py that on:

Traceback (most recent call last):
  File "from_genbank.py", line 3, in <module>
    graphic_record = BiopythonTranslator().translate_record("example_sequence.gb")
  File "/Library/Python/2.7/site-packages/dna_features_viewer/dna_features_viewer.py", line 468, in translate_record
    return grecord_class(sequence_length=len(record.seq), features=[
AttributeError: 'str' object has no attribute 'seq'
Tobiass-Air:examples Tobias$ python plot_with_bokeh.py 
Traceback (most recent call last):
  File "plot_with_bokeh.py", line 8, in <module>
    record = BiopythonTranslator().translate_record(record="example_sequence.gb")
  File "/Library/Python/2.7/site-packages/dna_features_viewer/dna_features_viewer.py", line 468, in translate_record
    return grecord_class(sequence_length=len(record.seq), features=[
AttributeError: 'str' object has no attribute 'seq'`
Zulko commented 7 years ago

Definitely weird. I just pushed the Github master on PyPI, can you try to upgrade you DnaFeaturesViewer to the latest version, just to be sure ?

sudo pip install --upgrade dna_features_viewer
ghost commented 7 years ago

it gets even weirder: after updating DnaFeaturesViewer (although the latest version was installed), all the scripts are working. Maybe has to do with first updating Matplotlib and then DnaFeaturesViewer (?) anyway everything works now. thanks again for your help!

Zulko commented 7 years ago

What this means is that the latest changes and fixes on Github had not been pushed on PyPI, so that was an actual bug. Thanks for the report !