Admin message

Please use the issue tracker only to report bugs (i.e. errors in the library that need to be fixed) or feature requests.

Please check if the current git version also has the same problem. An easy way to do this is to use google colab!

For questions about how to compile, install or use the library, please use instead the web forum at https://forum.skewed.de/c/graph-tool.


(If unsure, use the forum first.)


IMPORTANT: When opening new issues, please fill out the required information listed in the issue template!

NameError: name ‘log’ is not defined in mcmc_equilibrate


Note Originally posted on Discourse


Bug reports

I cannot reproduce the issue on a ReprEx with built-in data, so it may not be a bug. But I can reproduce it on a bunch of data (e.g., sharetot.graphml) that used to work fine until I ran some updates on my Ubuntu 22.04.4 LTS system. I tried removing and re-installing graph-tool, but to no avail.

Troubleshooting steps

  • Are you running the latest graph-tool version?
  • Do you observe the problem with the current git version?

Workflow

from graph_tool.all import *
import os
import re
import matplotlib
import numpy
import math
import pickle

sharetot = load_graph('./sharetot.graphml')

# Verify the property names
sharetot.list_properties()
recs = (sharetot.ep['Base metals'],
        sharetot.ep['Bulk of trade'],
        sharetot.ep['Machinery'],
        sharetot.ep['Processed food'],
        sharetot.ep['Stones'])
rec_types = ['real-normal', 'real-normal', 'real-normal',
             'real-normal', 'real-normal']

sharetot.vp.period = sharetot.vp.period.coerce_type()
sharetot.ep.layer = sharetot.ep.layer.coerce_type()

state_sharetot_lF_dF_oF = LayeredBlockState(g = sharetot, ec = sharetot.ep.layer,
                                 recs = recs, rec_types = rec_types,
                                 pclabel = sharetot.vp.period.get_array(),
                                 layers = False, deg_corr = False,
                                 overlap = False)

res_sharetot_lT_dF_oF = minimize_nested_blockmodel_dl(sharetot,
                              state_args = dict(
                                  base_type=LayeredBlockState,
                                  state_args=dict(
                                      ec = sharetot.ep.layer,
                                    recs = recs, rec_types = rec_types,
                                    pclabel = sharetot.vp.period.get_array(),
                                    layers = True, deg_corr = False,
                                    overlap = False
                                    )
                                  )
                              )

dS, nmoves=0, 0
for i in range(100):
    ret=res_sharetot_lT_dF_oF.multiflip_mcmc_sweep(niter=10)
    dS+=ret[0]
    nmoves+=ret[1]

print("Change in description length:", dS)
print("Number of accepted vertex moves:", nmoves)

# Equilibrate a MCMC to improve the partition
# Efficient Monte Carlo heuristic for the inference of stochastic block models
mcmc_equilibrate(res_sharetot_lT_dF_oF, wait=1000, mcmc_args=dict(niter=10),
                 verbose=True)

Additional information

  • OS: Ubuntu 22.04.4 LTS
  • Python version: 3.10

Error message

Traceback (most recent call last):

  Cell In[7], line 1
    mcmc_equilibrate(res_sharetot_lT_dF_oF, wait=1000, mcmc_args=dict(niter=10),

  File /usr/local/lib/python3.10/dist-packages/graph_tool/inference/mcmc.py:117 in mcmc_equilibrate
    S = state.entropy(**mcmc_args.get("entropy_args", {}))

  File /usr/local/lib/python3.10/dist-packages/graph_tool/inference/base_states.py:49 in wrapper
    S = func(self, *args, **kwargs)

  File /usr/local/lib/python3.10/dist-packages/graph_tool/inference/nested_blockmodel.py:374 in entropy
    S += kwargs.get("beta_dl", 1.) * self._Lrecdx_entropy()

  File /usr/local/lib/python3.10/dist-packages/graph_tool/inference/nested_blockmodel.py:343 in _Lrecdx_entropy
    S_D[j] -= log(B_E_D)

NameError: name 'log' is not defined
Edited Aug 09, 2024 by Ghost User
Assignee Loading
Time tracking Loading