Hello,

I have been running a piece of code from the cookbook on a dataset of mine.
I last ran it a year ago when it worked fine, now I however am getting error
messages. The first one is "Segmentation fault (core dumped)" which I think
is happening during a call to "state = gt.minimize_nested_blockmodel_dl(g,
deg_corr=False,overlap=True)". The other one is "terminate called after
throwing an instance of 'std::length_error'
  what():  vector::_M_default_append
Aborted (core dumped)" which seems to be happening during
"gt.mcmc_equilibrate(state,force_niter=20000,
mcmc_args=dict(niter=10),callback=collect_marginals)". I am running the
latest apt-get version of graph-tool on python2 on Ubuntu 16.04. I realise
this may not be worth much without the data set (which I unfortunately can't
share) but I thought I would check whether anybody has observed similar
issue (my theory is that given it has worked in the past it might be linked
to a version update). I will see if I can get a dataset for an MWE in the
meantime.

The code I was running was:

import graph_tool.all as gt
import numpy as np
import cPickle as pickle
import timeit

g = gt.load_graph('graph_no_multi_1930.gt')

with open('model_selection_results_1930.dat','a') as output:
    deg_corr = False
    overlap = True
    nL = 10
    
    # Initialize the Markov chain from the "ground state"
    state = gt.minimize_nested_blockmodel_dl(g,
deg_corr=deg_corr,overlap=overlap)
    dl = state.entropy()
    temp = "Description length: "
    temp+= str(dl)
    temp+='\n'
    output.write(temp)
    output.flush()
    print 'minimised state'
    bs = state.get_bs()                     # Get hierarchical partition.
    bs += [np.zeros(1)] * (nL - len(bs))    # Augment it to L = 10 with
                                            # single-group levels.

    state = state.copy(bs=bs, sampling=True)

    dls = []                               # description length history
    vm = [None] * len(state.get_levels())  # vertex marginals
    em = None                              # edge marginals

    def collect_marginals(s):
        global vm, em
        levels = s.get_levels()
        vm = [sl.collect_vertex_marginals(vm[l]) for l, sl in
enumerate(levels)]
        em = levels[0].collect_edge_marginals(em)
        dls.append(s.entropy())

    # Now we collect the marginal distributions for exactly 200,000 sweeps
    print 'equilibrating'
    start=timeit.default_timer()
    gt.mcmc_equilibrate(state, force_niter=20000, mcmc_args=dict(niter=10),
                        callback=collect_marginals)
    duration=timeit.default_timer()-start
    print 'duration for equilibrating: ', duration

    S_mf = [gt.mf_entropy(sl.g, vm[l]) for l, sl in
enumerate(state.get_levels())]
    S_bethe = gt.bethe_entropy(g, em)[0]
    L = -np.mean(dls)
    
    val1 = L+sum(S_mf)
    val2 = L + S_bethe + sum(S_mf[1:])
    temp = "Model evidence for nested blockmodel, deg_corr = " 
    temp+=str(deg_corr)+', overlap = '+str(overlap)
    temp+=':'+str(val1)+"(mean field),"
    temp+=str(val2)+"(Bethe)"+'\n'
    output.write(temp)
    output.flush()
    with open('raw_results.dat','w') as f:
        f.write('DL: ')
        f.write(str(L))
        f.write('\n')
        f.write('S_mf: ')
        f.write(str(sum(S_mf)))
        f.write('\n')
        f.write('S_bethe: ')
        f.write(str(S_bethe))
        f.write('\n')
        f.write('S_bethe + sum(S_mf[1:]): ')
        f.write(str(S_bethe + sum(S_mf[1:])))

Best wishes,

Philipp



--
Sent from: 
http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/
_______________________________________________
graph-tool mailing list
[email protected]
https://lists.skewed.de/mailman/listinfo/graph-tool

Reply via email to