Extracting vertices with a given property

Hi all,
I was wondering if there is a clever way to extract the list of vertices
with a given value of a property or if you have to run a loop on the
vertices on build the list by hand (I searched on the documentation but did
not find it...).
Thanks,
F.

attachment.html (322 Bytes)

Hi Flavien,
you may use filters as explained here
http://graph-tool.skewed.de/static/doc/quickstart.html#graph-filtering

Best,
Giuseppe

2014-07-07 8:06 GMT+02:00 Flavien Lambert <petit.lepton(a)gmail.com>:

attachment.html (1.24 KB)

Thanks a lot! To be sure to understand, in the XML file, a property must be
defined as a boolean on the nodes and set as either 0 or 1, right?

attachment.html (2.11 KB)

With filters, you can either directly select a boolean property or apply a
function. For example, if you have a property representing the temperature
of nodes, you can select all nodes above a specific value and so on.

Giuseppe

2014-07-07 9:32 GMT+02:00 Flavien Lambert <petit.lepton(a)gmail.com>:

attachment.html (3.06 KB)

You can create a property map after the file is loaded, as explained here:

    http://graph-tool.skewed.de/static/doc/quickstart.html#property-maps

For your purposes, also consider the find_vertex() function:

    http://graph-tool.skewed.de/static/doc/util.html#graph_tool.util.find_vertex

Best,
Tiago

Something like this may work for you:

# Setup your boolean property map, which should give you an empty array of zeros
v_mask = g.new_vertex_property('bool')

# Assign values to the mask property map array from another property map array
# In this case where a certain property map is <= to a value
# Note use of the .a to directly access the arrays -> shortcut for get_array() method
v_mask.a = v_propMap.a <= val

# Then activate your filter
g.set_vertex_filter(v_mask)

# Remember to de-activate prior to running other operations on the whole graph
g.set_vertex_filter(None)

# Remember to clear or recreate your mask prior to new assignments
# This is what I use -> requires 'import numpy'
v_mask.a = numpy.zeros_like(v_mask.a)

There may be other methods that work better, but this has so far worked nicely for me.
Gareth

attachment.html (4.75 KB)

Thanks for all these answers! The find_vertex is nice.

Is there a way to use this sample of nodes directly with in_hist or should
I do a loop?

attachment.html (5.58 KB)

Hi! Gareth, I just realized that you gave me the answer, sorry for the slow
understanding!
Best,
F.

attachment.html (6.12 KB)