Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def inspectCommunities(zeta, G):
""" Display information about communities
:param zeta communities
:param G graph
"""
if not have_tabulate:
raise MissingDependencyError("tabulate")
communitySizes = zeta.subsetSizes()
mod = Modularity().getQuality(zeta, G)
commProps = [
["# communities", zeta.numberOfSubsets()],
["min community size", min(communitySizes)],
["max community size", max(communitySizes)],
["avg. community size", sum(communitySizes) / len(communitySizes)],
#["imbalance", zeta.getImbalance()],
["modularity", mod],
]
print(tabulate.tabulate(commProps))
def plotSummary2(self, figsize=None, groupby="framework", palette="Greens_d"):
""" Plot a summary of algorithm performances"""
if not have_plt:
raise MissingDependencyError("matplotlib")
if not have_seaborn:
raise MissingDependencyError("seaborn")
if figsize:
plt.figure(figsize=figsize)
plt.gca().xaxis.get_major_formatter().set_powerlimits((3, 3))
plt.xscale("log")
plt.xlabel("edges/s")
ax = seaborn.boxplot(y="algorithm", x="edges/s", hue=groupby, data=self.dataFrame, linewidth=1, width=.5, palette=palette)
if self.save:
plt.savefig(os.path.join(self.plotDir, "epsSummary.pdf".format(**locals())), bbox_inches="tight")
def plotSummary(self, algoNames=None, figsize=None):
""" Plot a summary of algorithm performances"""
if not have_plt:
raise MissingDependencyError("matplotlib")
if not have_pandas:
raise MissingDependencyError("pandas")
if not have_seaborn:
raise MissingDependencyError("seaborn")
if algoNames is None:
algoNames = list(self.data.keys())
epsSummary = pandas.DataFrame()
for (algoName, algoData) in self.data.items():
if algoName in algoNames:
epsSummary[algoName] = pandas.Series(self.data[algoName]["edges/s"])
# data frame
self.epsSummary = epsSummary
self.epsSummary = self.epsSummary.reindex_axis(sorted(self.epsSummary.columns), axis=1)
if self.save:
self.epsSummary.to_csv(os.path.join(self.outDataDir, "epsSummary.csv".format(**locals())))
# plot
if figsize:
plt.figure(figsize=figsize)
plt.gca().xaxis.get_major_formatter().set_powerlimits((3, 3))
def finalize(self):
if not have_pandas:
raise MissingDependencyError("pandas")
self.dataFrame = pandas.DataFrame(self.data)
if self.save:
self.dataFrame.to_csv(os.path.join(self.outDataDir, "data.csv".format(**locals())))
def plotSummary2(self, figsize=None, groupby="framework", palette="Greens_d"):
""" Plot a summary of algorithm performances"""
if not have_plt:
raise MissingDependencyError("matplotlib")
if not have_seaborn:
raise MissingDependencyError("seaborn")
if figsize:
plt.figure(figsize=figsize)
plt.gca().xaxis.get_major_formatter().set_powerlimits((3, 3))
plt.xscale("log")
plt.xlabel("edges/s")
ax = seaborn.boxplot(y="algorithm", x="edges/s", hue=groupby, data=self.dataFrame, linewidth=1, width=.5, palette=palette)
if self.save:
plt.savefig(os.path.join(self.plotDir, "epsSummary.pdf".format(**locals())), bbox_inches="tight")
def set(self, style="light", color=(0, 0, 1)):
""" sets style and color of the theme
Args:
style: ("light")
color: RGB tuple
"""
if not have_mpl:
raise MissingDependencyError("matplotlib")
optionsStyle = ["light", "system"]
if style not in optionsStyle:
raise ValueError("possible style options: " + str(optionsStyle))
if len(color) != 3:
raise ValueError("(r,g,b) tuple required")
if style == "system":
self.__rcParams = mpl.rcParams
raise ValueError("not implemented, yet")
if style == "light":
self.__defaultColor = (0, 0, 0)
self.__defaultWidth = 1
self.__backgroundColor = (1, 1, 1)
self.__plotColor = Theme.RGBA2RGB(color, 0.6, self.__backgroundColor)
self.__plotWidth = 3
class bFail:
name = "Fail"
def run(self, G):
raise Exception("FAIL!")
# Plots
## plot settings
if not have_seaborn:
raise MissingDependencyError("seaborn")
seaborn.set_style("whitegrid")
### Colors
lightred = seaborn.xkcd_rgb["red"]
darkred = seaborn.xkcd_rgb["crimson"]
green = seaborn.xkcd_rgb["teal"]
orange = seaborn.xkcd_rgb["bright orange"]
# plot functions
def timePlot(data, size=(6,3)):
if not have_plt:
raise MissingDependencyError("matplotlib")
pos = numpy.arange(len(data))+.5 # the bar centers on the y axis
labels = list(data["graph"])
plt.figure(figsize=size)
def nk2nx(nkG):
""" Convert a NetworKit.Graph to a networkx.Graph """
if not have_nx:
raise MissingDependencyError("networkx")
if nkG.isDirected():
nxG = nx.DiGraph()
else:
nxG = nx.Graph()
nxG.add_nodes_from(nkG.nodes())
if nkG.isWeighted():
for (u, v) in nkG.edges():
nxG.add_edge(u, v, weight=nkG.weight(u, v))
else:
nxG.add_edges_from(nkG.edges())
assert (nkG.numberOfNodes() == nxG.number_of_nodes())
assert (nkG.numberOfEdges() == nxG.number_of_edges())
return nxG
def hopPlot(G, **kwargs):
""" Prints the hop-plot"""
#hop-plot
if not have_plt:
raise MissingDependencyError("matplotlib")
if G.isDirected():
cc = components.StronglyConnectedComponents(G)
else:
cc = components.ConnectedComponents(G)
cc.run()
if cc.numberOfComponents() == 1:
hopPlot = distance.EffectiveDiameter.hopPlot(G, maxDistance=0, k=64, r=7)
else:
hopPlot = {}
plt.xlabel('distance')
plt.ylabel('fraction of connected nodes')
plt.ylim([0,1.02])
plt.plot(list(hopPlot.keys()), list(hopPlot.values()), **kwargs)
#plt.show()