gt.sfdp_layout produces RuntimeError: No static implementation was found for the desired routine
Hi,
Using the sfdp_layout method with an initial position argument generates an error. Here is a minimal example:
import graph_tool.all as gt
gr = gt.Graph()
v1 = gr.add_vertex()
v2 = gr.add_vertex()
v3 = gr.add_vertex()
gr.add_edge(v1, v2)
gr.add_edge(v1, v3)
gr.add_edge(v2, v3)
layout = gt.fruchterman_reingold_layout(gr)
new_layout = gt.sfdp_layout(gr, layout)
RuntimeError Traceback (most recent call last)
<ipython-input-28-c9019be9a8c3> in <module>()
----> 1 new_layout = gt.sfdp_layout(gr, layout)
/usr/local/lib/python2.7/site-packages/graph_tool/draw/__init__.pyc in sfdp_layout(g, vweight, eweight, pin, groups, C, K, p, theta, max_level, gamma, mu, mu_p, init_step, cooling_step, adaptive_cooling, epsilon, max_iter, pos, multilevel, coarse_method, mivs_thres, ec_thres, coarse_stack, weighted_coarse, verbose)
700 theta, init_step, cooling_step, max_level,
701 epsilon, max_iter, not adaptive_cooling,
--> 702 verbose, _get_rng())
703 return pos
704
RuntimeError: No static implementation was found for the desired routine. This is a graph_tool bug. :-( Please follow bug report instructions at http://graph-tool.skewed.de/tickets. What follows is debug information.
Graph view: boost::UndirectedAdaptor<boost::adj_list<unsigned long> >*
Action: std::__1::__bind<graph_tool::get_sfdp_layout, std::__1::placeholders::__ph<1>&, boost::typed_identity_property_map<unsigned long>, std::__1::placeholders::__ph<2>&, std::__1::placeholders::__ph<3>&, std::__1::placeholders::__ph<4>&, boost::unchecked_vector_property_map<unsigned char, boost::typed_identity_property_map<unsigned long> >, boost::unchecked_vector_property_map<int, boost::typed_identity_property_map<unsigned long> >, bool&, std::__1::reference_wrapper<std::__1::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u> > >
Arg 1: boost::checked_vector_property_map<std::__1::vector<double, std::__1::allocator<double> >, boost::typed_identity_property_map<unsigned long> >
Arg 2: boost::checked_vector_property_map<std::__1::vector<double, std::__1::allocator<double> >, boost::typed_identity_property_map<unsigned long> >
Arg 3: graph_tool::ConstantPropertyMap<int, boost::adj_list<unsigned long>::edge_descriptor>`