Error with pen_width

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Error with pen_width

Snehal Shekatkar
Hello Tiago,

It looks like the commit "e3c57b270640f9948d7fda7459376eb40d600719" has introduced a bug in the cairo_draw that I have fixed on my machine but I would like to create a merge request for the same. In short the following code throws the error:

import graph_tool.all as gt
g = gt.collection.data['karate']
gt.graph_draw(g, vertex_pen_width=5, vertex_color = 'k', output='test.png')

The error is:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py", line 1145, in graph_draw
    x, y, w, h = fit_view
TypeError: cannot unpack non-iterable bool object

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    gt.graph_draw(g, vertex_pen_width=1, output='test.png')
  File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py", line 1153, in graph_draw
    x, y, zoom = fit_to_view_ink(g, pos, output_size, vprops,
  File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py", line 1345, in fit_to_view_ink
    eprops = dict(eprops, pen_width=min_lw(eprops.get("pen_width")))
  File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py", line 1342, in min_lw
    lw = max(lw, 0.1)
TypeError: '>' not supported between instances of 'float' and 'NoneType'

I tracked the error and it looks to me that in the function ``min_lw`` which itself is inside ``fit_to_view_ink``, if user passes ``pen_width`` only for edges or only for vertices, the other becomes ``None`` and should be handled properly. I could fix this by adding an extra ``if`` condition as follows:

    # work around cairo bug with small line widths
    def min_lw(lw):
        if isinstance(lw, PropertyMap):
            lw = lw.copy()
            x = lw.fa
            x[x < 0.05] = 0.1
            lw.fa = x
        else:
            if lw == None:
                lw = 0.1
            lw = max(lw, 0.1)
        return lw

I would like to push this change upstream, but you seem to have denied my access request so I can't create a merge request. If you think this is fine, could you make the change? In general, how do I fix bugs if/when I find them if access on git.skewed is not available?

Thanks and regards,
Snehal Shekatkar





_______________________________________________
graph-tool mailing list
[hidden email]
https://lists.skewed.de/mailman/listinfo/graph-tool
Reply | Threaded
Open this post in threaded view
|

Re: Error with pen_width

Snehal Shekatkar
Hello Tiago,

I could create the merge request successfully. Thanks so much.

Regards,
Snehal Shekatkar


‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Saturday, October 31, 2020 4:56 PM, Snehal Shekatkar <[hidden email]> wrote:

Hello Tiago,

It looks like the commit "e3c57b270640f9948d7fda7459376eb40d600719" has introduced a bug in the cairo_draw that I have fixed on my machine but I would like to create a merge request for the same. In short the following code throws the error:

import graph_tool.all as gt
g = gt.collection.data['karate']
gt.graph_draw(g, vertex_pen_width=5, vertex_color = 'k', output='test.png')

The error is:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py", line 1145, in graph_draw
    x, y, w, h = fit_view
TypeError: cannot unpack non-iterable bool object

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    gt.graph_draw(g, vertex_pen_width=1, output='test.png')
  File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py", line 1153, in graph_draw
    x, y, zoom = fit_to_view_ink(g, pos, output_size, vprops,
  File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py", line 1345, in fit_to_view_ink
    eprops = dict(eprops, pen_width=min_lw(eprops.get("pen_width")))
  File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py", line 1342, in min_lw
    lw = max(lw, 0.1)
TypeError: '>' not supported between instances of 'float' and 'NoneType'

I tracked the error and it looks to me that in the function ``min_lw`` which itself is inside ``fit_to_view_ink``, if user passes ``pen_width`` only for edges or only for vertices, the other becomes ``None`` and should be handled properly. I could fix this by adding an extra ``if`` condition as follows:

    # work around cairo bug with small line widths
    def min_lw(lw):
        if isinstance(lw, PropertyMap):
            lw = lw.copy()
            x = lw.fa
            x[x < 0.05] = 0.1
            lw.fa = x
        else:
            if lw == None:
                lw = 0.1
            lw = max(lw, 0.1)
        return lw

I would like to push this change upstream, but you seem to have denied my access request so I can't create a merge request. If you think this is fine, could you make the change? In general, how do I fix bugs if/when I find them if access on git.skewed is not available?

Thanks and regards,
Snehal Shekatkar






_______________________________________________
graph-tool mailing list
[hidden email]
https://lists.skewed.de/mailman/listinfo/graph-tool
Reply | Threaded
Open this post in threaded view
|

Re: Error with pen_width

Tiago Peixoto
Administrator
In reply to this post by Snehal Shekatkar
Am 31.10.20 um 12:26 schrieb Snehal Shekatkar:
> I would like to push this change upstream, but you seem to have denied
> my access request so I can't create a merge request. If you think this
> is fine, could you make the change? In general, how do I fix bugs
> if/when I find them if access on git.skewed is not available?
>

You had requested for developer access to the graph-tool repository,
which would have given you permissions to do arbitrary modifications.
I'm the only one who has this kind of access; but this is not necessary
at all to create merge requests. The actual route is simply to clone the
repository, make the changes to your cloned version, and then do a merge
request.

--
Tiago de Paula Peixoto <[hidden email]>
_______________________________________________
graph-tool mailing list
[hidden email]
https://lists.skewed.de/mailman/listinfo/graph-tool
--
Tiago de Paula Peixoto <tiago@skewed.de>
Reply | Threaded
Open this post in threaded view
|

Re: Error with pen_width

Tiago Peixoto
Administrator
In reply to this post by Snehal Shekatkar
Thanks for pointing out the bug; I have fixed it git.

Best,
Tiago

Am 31.10.20 um 12:56 schrieb Snehal Shekatkar:

> Hello Tiago,
>
> I could create the merge request successfully. Thanks so much.
>
> Regards,
> Snehal Shekatkar
>
>
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Saturday, October 31, 2020 4:56 PM, Snehal Shekatkar
> <[hidden email] <mailto:[hidden email]>>
> wrote:
>
>> Hello Tiago,
>>
>> It looks like the commit "e3c57b270640f9948d7fda7459376eb40d600719"
>> has introduced a bug in the cairo_draw that I have fixed on my machine
>> but I would like to create a merge request for the same. In short the
>> following code throws the error:
>>
>> import graph_tool.all as gt
>> g = gt.collection.data['karate']
>> gt.graph_draw(g, vertex_pen_width=5, vertex_color = 'k',
>> output='test.png')
>>
>> The error is:
>>
>> Traceback (most recent call last):
>>   File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py",
>> line 1145, in graph_draw
>>     x, y, w, h = fit_view
>> TypeError: cannot unpack non-iterable bool object
>>
>> During handling of the above exception, another exception occurred:
>>
>> Traceback (most recent call last):
>>   File "test.py", line 4, in <module>
>>     gt.graph_draw(g, vertex_pen_width=1, output='test.png')
>>   File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py",
>> line 1153, in graph_draw
>>     x, y, zoom = fit_to_view_ink(g, pos, output_size, vprops,
>>   File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py",
>> line 1345, in fit_to_view_ink
>>     eprops = dict(eprops, pen_width=min_lw(eprops.get("pen_width")))
>>   File "/usr/lib/python3/dist-packages/graph_tool/draw/cairo_draw.py",
>> line 1342, in min_lw
>>     lw = max(lw, 0.1)
>> TypeError: '>' not supported between instances of 'float' and 'NoneType'
>>
>> I tracked the error and it looks to me that in the function ``min_lw``
>> which itself is inside ``fit_to_view_ink``, if user passes
>> ``pen_width`` only for edges or only for vertices, the other becomes
>> ``None`` and should be handled properly. I could fix this by adding an
>> extra ``if`` condition as follows:
>>
>>     # work around cairo bug with small line widths
>>     def min_lw(lw):
>>         if isinstance(lw, PropertyMap):
>>             lw = lw.copy()
>>             x = lw.fa
>>             x[x < 0.05] = 0.1
>>             lw.fa = x
>>         else:
>>             if lw == None:
>>                 lw = 0.1
>>             lw = max(lw, 0.1)
>>         return lw
>>
>> I would like to push this change upstream, but you seem to have denied
>> my access request so I can't create a merge request. If you think this
>> is fine, could you make the change? In general, how do I fix bugs
>> if/when I find them if access on git.skewed is not available?
>>
>> Thanks and regards,
>> Snehal Shekatkar
>>
>>
>>
>>
>
>
> _______________________________________________
> graph-tool mailing list
> [hidden email]
> https://lists.skewed.de/mailman/listinfo/graph-tool
>

--
Tiago de Paula Peixoto <[hidden email]>


_______________________________________________
graph-tool mailing list
[hidden email]
https://lists.skewed.de/mailman/listinfo/graph-tool

signature.asc (849 bytes) Download Attachment
--
Tiago de Paula Peixoto <tiago@skewed.de>