Dear Tiago,

I have a directed graph of about half a million nodes and approximately a

million edges following scale free behaviour and a power law degree

distribution. To test some of my hypothesis, I would like to generate random

smaller graphs (about 50 up to 200 nodes) representative of the big one.

When I used a sample function that samples straight away from the real

distribution of the big network, I have following problems:

- I generate unconnected nodes with both 0 in AND out degree.

- I generate small sub parts of a few nodes that are not connected to the

main graph.

- If only sampling from nodes with at least 1 degree, the generated graph is

coherent, but not representative anymore as I need a big portion of nodes

with either only one in or one out degree.

Here is the part of my script I used for that, where samples are drawn from

dictionaries of the degrees:

def sample_in():

a=np.random.randint(num)

k_in = in_degrees[a]

return k_in

def sample_out():

if sample_in()==0:

b=np.random.randint(num_out)

k_out=out_zero_zeros.values()[b]

return k_out

else:

b=np.random.randint(num)

k_out=out_degrees[b]

return k_out

N=200

g=gt.random_graph(N, lambda:(sample_in(), sample_out()),

model="constrained-configuration", directed=True)

I also tried sampling from a list of tuples as you have mentioned before in

the forum, but I didn't receive any results, as the tuples randomly drawn

degs=[(7,1),(4,3),(5,6),(2,4),(6,8),(2,0),(3,5),(0,3),(2,7),(2,1)]

g = gt.random_graph(4, lambda i: degs[i], directed=True)

- Is there any option I could active that would help me in those cases I

described above?

- Is there a better way how to create representative small networks?

Any help on that issue will be much appreciated.

Best wishes,

Jana