Module qbiome.network
Expand source code
import pandas as pd
import graph_tool.all as gt
import numpy as np
import matplotlib as mpl
import matplotlib.cm as cm
from matplotlib.colors import LinearSegmentedColormap
from tqdm import tqdm
class Network(object):
def __init__(self,
input_dotfile,
cmap=cm.Spectral_r,
edgecolmap=None,
preflen=8,
alpha=.7,
minsize=5,
edgealpha=.2,
exponent=1,
edgecollim=2,
nodesep=10,
strongcomponent=True,
removeselfloops=True,
exponentialscaling=True,
outfile=None):
"""Process hypothesis generated dotfile for network visualization
Args:
input_dotfile (str): dotfile generated from hypothesis module
cmap (matplotlib colormap): color map for nodes (Default value = cm.Spectral_r)
edgecolmap (matplotlib colormap): edge color map (Default value = None)
preflen (int): max length of node names (Default value = None)
alpha (float): alpha for nodes (Default value = .7)
minsize (int): minimum soze of nodes (Default value = 5)
nodesep (int): node separation in position calculation (Default value = 10)
edgealpha (float): edge alpha (Default value = .2)
exponent (int): exponent in exponential scaling (Default value = 1)
edgecollim (int): range for colomap on edges (Default value = 2)
strongcomponent (bool): if True only show strong component (Default value = True)
removeselfloops (bool): if True remove self loops (Default value = True)
exponentialscaling (bool): if True use exponential scaling (Default value = True)
outfile (str): output filename (Default value = None)
Returns:
"""
if edgecolmap is None:
self.edgecolmap=LinearSegmentedColormap.from_list(
'edgecolmap',
['#0000ff',
'#888888',
'#ff0000'])
else:
self.edgecolmap=edgecolmap
self.minsize=minsize
self.cmap=cmap
self.network=None
self.dotfile=input_dotfile
self.preflen=preflen
self.edgealpha=edgealpha
self.exponent=exponent
self.edgecollim=edgecollim
self.strongcomponent=strongcomponent
self.removeselfloops=removeselfloops
self.exponentialscaling=exponentialscaling
self.alpha=alpha
self.nodesep=nodesep
self.nm=None
self.od=None
self.pos=None
self.hl=None
self.ew_pen=None
self.e_marker=None
self.deg=None
self.control=None
self.ods=None
self.varclass=None
self.ecol=None
self.outfile=outfile
def short_name(self,s,LEN):
"""
Args:
s (str): string
LEN (nt): length of short name
Returns:
str: short name
"""
num=len(s.split('_'))
if num>1:
LEN=int(LEN//num) + 1
return '_'.join([x[:LEN] for x in s.split('_')])
def f(self,x,A=0,E=True,exponent=2.0):
"""adjust node sizes
Args:
x:
A: (Default value = 0)
E: (Default value = True)
exponent: (Default value = 2.0)
Returns:
float
"""
if E:
return exponent**x + A
return x+A
def sfunc(self,val,SIGN=False):
"""
Args:
val:
SIGN: (Default value = False)
Returns:
float
"""
if SIGN:
return np.sign(val)
return val
def get(self):
"""Set graph-tool network for drawing"""
self.network = gt.load_graph(self.dotfile)
if self.strongcomponent:
self.network=gt.extract_largest_component(
self.network, directed=True, prune=True)
if self.removeselfloops:
gt.remove_self_loops(self.network)
self.nm = self.network.new_vertex_property("string")
nm2 = self.network.new_vertex_property("string")
self.hl = self.network.new_vertex_property("bool")
self.network.vertex_properties["text"] = self.nm
self.network.vertex_properties["text"] = nm2
names=[]
for v in self.network.vertices():
if v.out_degree() > -1:
self.nm[v]=self.short_name(
self.network.vp.vertex_name[v],self.preflen)
nm2[v]=self.short_name(
self.network.vp.vertex_name[v],self.preflen)
self.hl[v]=False
else:
nm2[v]=self.short_name(
self.network.vp.vertex_name[v],self.preflen)
self.nm[v]=''
self.hl[v]=False
names=names+[nm2[v]]
NAMES=pd.Series(list(set(names)),
name='varclass').reset_index().set_index('varclass')
self.varclass = self.network.new_vertex_property("float")
self.network.vertex_properties["varclass"] = self.varclass
for v in self.network.vertices():
self.varclass[v]=NAMES.loc[nm2[v]].values[0]
self.od = self.network.new_vertex_property("float")
self.network.vertex_properties["size"] = self.od
for v in self.network.vertices():
self.od[v]=self.f(v.out_degree(),
A=self.minsize,
E=self.exponentialscaling,
exponent=self.exponent)+5
self.ods = self.network.new_vertex_property("float")
self.network.vertex_properties["size"] = self.ods
for v in self.network.vertices():
self.ods[v]=1*self.f(v.out_degree(),
A=self.minsize,
E=self.exponentialscaling,
exponent=1)+2
self.ew = self.network.new_edge_property("float")
self.network.edge_properties["eweight"] = self.ew
for e in self.network.edges():
self.ew[e]=float(self.network.ep.weight[e])**1
self.ew_pen = self.network.new_edge_property("float")
self.network.edge_properties["eweight_pen"] = self.ew_pen
for e in self.network.edges():
self.ew_pen[e]=4/(1 + np.exp(-.05-np.fabs(float(self.network.ep.weight[e]))))
self.e_marker = self.network.new_edge_property("string")
self.network.edge_properties["e_marker"] = self.e_marker
for e in self.network.edges():
if float(self.network.ep.weight[e]) < 0:
self.e_marker[e]='bar'
else:
self.e_marker[e]='arrow'
self.deg = self.network.degree_property_map("out")
self.ecol = self.network.new_edge_property("vector<double>")
self.network.edge_properties["ecol"] = self.ecol
for e in self.network.edges():
col=cm.ScalarMappable(mpl.colors.Normalize(vmin=-self.edgecollim,
vmax=self.edgecollim),
cmap=self.edgecolmap).to_rgba(float(self.ew[e]))
col=list(col)
col[3]=self.edgealpha
self.ecol[e]=tuple(col)
self.pos = gt.graphviz_draw(self.network,
overlap=False,
vsize=20,
sep=self.nodesep,
output=None)
self.control = self.network.new_edge_property("vector<double>")
for e in self.network.edges():
d = np.sqrt(np.sum((self.pos[e.source()].a
- self.pos[e.target()].a) ** 2))
d=d/2
self.control[e] = [0.0,0.0,0, .2*d, 0.5, d,1,0]
if self.outfile is not None:
gt.graph_draw(self.network,nodesfirst=False,
pos=self.pos,
vertex_halo=self.hl,
vertex_halo_color=[.2,.2,.2,.1],
edge_pen_width=self.ew_pen,
edge_end_marker=self.e_marker,
vorder=self.deg,
edge_marker_size=10,
vertex_color=self.varclass,#[.5,.5,.5,.3],
edge_color=self.ecol,#[.5,.5,.5,.5],
vertex_pen_width=1.5,
vertex_size=self.od,
vertex_text=self.nm,
vcmap=(self.cmap,self.alpha),
edge_control_points=self.control,
vertex_fill_color=self.varclass,#deg,
vertex_font_size=self.ods,
vertex_text_color=[.1,.1,.1,.8],
#vertex_text_position=0,
output=self.outfile)
def draw(self,
pen_width=None,
cmap=None,
alpha=None,
text_pos=None):
"""Draw network
Args:
pen_width (float): (Default value = None)
cmap (matplotlib colormap): (Default value = None)
alpha (float): (Default value = None)
text_pos (float): if not None, puts node text below node (Default value = None)
Returns:
"""
if pen_width is None:
edge_pen_width=self.ew_pen
else:
edge_pen_width=pen_width
if cmap is None:
cmap=self.cmap
if alpha is None:
alpha=self.alpha
if text_pos is None:
gt.graph_draw(self.network,nodesfirst=False,
pos=self.pos,
vertex_halo=self.hl,
vertex_halo_color=[.2,.2,.2,.1],
edge_pen_width=pen_width,
edge_end_marker=self.e_marker,
vorder=self.deg,
edge_marker_size=10,
vertex_color=self.varclass,#[.5,.5,.5,.3],
edge_color=self.ecol,#[.5,.5,.5,.5],
vertex_pen_width=1.5,
vertex_size=self.od,
vertex_text=self.nm,
vcmap=(cmap,alpha),
edge_control_points=self.control,
vertex_fill_color=self.varclass,#deg,
vertex_font_size=self.ods,
vertex_text_color=[.1,.1,.1,.8],
output=self.outfile)
else:
gt.graph_draw(self.network,nodesfirst=False,
pos=self.pos,
vertex_halo=self.hl,
vertex_halo_color=[.2,.2,.2,.1],
edge_pen_width=pen_width,
edge_end_marker=self.e_marker,
vorder=self.deg,
edge_marker_size=10,
vertex_color=self.varclass,#[.5,.5,.5,.3],
edge_color=self.ecol,#[.5,.5,.5,.5],
vertex_pen_width=1.5,
vertex_size=self.od,
vertex_text=self.nm,
vcmap=(cmap,alpha),
edge_control_points=self.control,
vertex_fill_color=self.varclass,#deg,
vertex_font_size=self.ods,
vertex_text_color=[.1,.1,.1,.8],
vertex_text_position=text_pos,
output=self.outfile)
Classes
class Network (input_dotfile, cmap=<matplotlib.colors.LinearSegmentedColormap object>, edgecolmap=None, preflen=8, alpha=0.7, minsize=5, edgealpha=0.2, exponent=1, edgecollim=2, nodesep=10, strongcomponent=True, removeselfloops=True, exponentialscaling=True, outfile=None)
-
Process hypothesis generated dotfile for network visualization
Args
input_dotfile
:str
- dotfile generated from hypothesis module
cmap
:matplotlib colormap
- color map for nodes (Default value = cm.Spectral_r)
edgecolmap
:matplotlib colormap
- edge color map (Default value = None)
preflen
:int
- max length of node names (Default value = None)
alpha
:float
- alpha for nodes (Default value = .7)
minsize
:int
- minimum soze of nodes (Default value = 5)
nodesep
:int
- node separation in position calculation (Default value = 10)
edgealpha
:float
- edge alpha (Default value = .2)
exponent
:int
- exponent in exponential scaling (Default value = 1)
edgecollim
:int
- range for colomap on edges (Default value = 2)
strongcomponent
:bool
- if True only show strong component (Default value = True)
removeselfloops
:bool
- if True remove self loops (Default value = True)
exponentialscaling
:bool
- if True use exponential scaling (Default value = True)
outfile
:str
- output filename (Default value = None)
Returns:
Expand source code
class Network(object): def __init__(self, input_dotfile, cmap=cm.Spectral_r, edgecolmap=None, preflen=8, alpha=.7, minsize=5, edgealpha=.2, exponent=1, edgecollim=2, nodesep=10, strongcomponent=True, removeselfloops=True, exponentialscaling=True, outfile=None): """Process hypothesis generated dotfile for network visualization Args: input_dotfile (str): dotfile generated from hypothesis module cmap (matplotlib colormap): color map for nodes (Default value = cm.Spectral_r) edgecolmap (matplotlib colormap): edge color map (Default value = None) preflen (int): max length of node names (Default value = None) alpha (float): alpha for nodes (Default value = .7) minsize (int): minimum soze of nodes (Default value = 5) nodesep (int): node separation in position calculation (Default value = 10) edgealpha (float): edge alpha (Default value = .2) exponent (int): exponent in exponential scaling (Default value = 1) edgecollim (int): range for colomap on edges (Default value = 2) strongcomponent (bool): if True only show strong component (Default value = True) removeselfloops (bool): if True remove self loops (Default value = True) exponentialscaling (bool): if True use exponential scaling (Default value = True) outfile (str): output filename (Default value = None) Returns: """ if edgecolmap is None: self.edgecolmap=LinearSegmentedColormap.from_list( 'edgecolmap', ['#0000ff', '#888888', '#ff0000']) else: self.edgecolmap=edgecolmap self.minsize=minsize self.cmap=cmap self.network=None self.dotfile=input_dotfile self.preflen=preflen self.edgealpha=edgealpha self.exponent=exponent self.edgecollim=edgecollim self.strongcomponent=strongcomponent self.removeselfloops=removeselfloops self.exponentialscaling=exponentialscaling self.alpha=alpha self.nodesep=nodesep self.nm=None self.od=None self.pos=None self.hl=None self.ew_pen=None self.e_marker=None self.deg=None self.control=None self.ods=None self.varclass=None self.ecol=None self.outfile=outfile def short_name(self,s,LEN): """ Args: s (str): string LEN (nt): length of short name Returns: str: short name """ num=len(s.split('_')) if num>1: LEN=int(LEN//num) + 1 return '_'.join([x[:LEN] for x in s.split('_')]) def f(self,x,A=0,E=True,exponent=2.0): """adjust node sizes Args: x: A: (Default value = 0) E: (Default value = True) exponent: (Default value = 2.0) Returns: float """ if E: return exponent**x + A return x+A def sfunc(self,val,SIGN=False): """ Args: val: SIGN: (Default value = False) Returns: float """ if SIGN: return np.sign(val) return val def get(self): """Set graph-tool network for drawing""" self.network = gt.load_graph(self.dotfile) if self.strongcomponent: self.network=gt.extract_largest_component( self.network, directed=True, prune=True) if self.removeselfloops: gt.remove_self_loops(self.network) self.nm = self.network.new_vertex_property("string") nm2 = self.network.new_vertex_property("string") self.hl = self.network.new_vertex_property("bool") self.network.vertex_properties["text"] = self.nm self.network.vertex_properties["text"] = nm2 names=[] for v in self.network.vertices(): if v.out_degree() > -1: self.nm[v]=self.short_name( self.network.vp.vertex_name[v],self.preflen) nm2[v]=self.short_name( self.network.vp.vertex_name[v],self.preflen) self.hl[v]=False else: nm2[v]=self.short_name( self.network.vp.vertex_name[v],self.preflen) self.nm[v]='' self.hl[v]=False names=names+[nm2[v]] NAMES=pd.Series(list(set(names)), name='varclass').reset_index().set_index('varclass') self.varclass = self.network.new_vertex_property("float") self.network.vertex_properties["varclass"] = self.varclass for v in self.network.vertices(): self.varclass[v]=NAMES.loc[nm2[v]].values[0] self.od = self.network.new_vertex_property("float") self.network.vertex_properties["size"] = self.od for v in self.network.vertices(): self.od[v]=self.f(v.out_degree(), A=self.minsize, E=self.exponentialscaling, exponent=self.exponent)+5 self.ods = self.network.new_vertex_property("float") self.network.vertex_properties["size"] = self.ods for v in self.network.vertices(): self.ods[v]=1*self.f(v.out_degree(), A=self.minsize, E=self.exponentialscaling, exponent=1)+2 self.ew = self.network.new_edge_property("float") self.network.edge_properties["eweight"] = self.ew for e in self.network.edges(): self.ew[e]=float(self.network.ep.weight[e])**1 self.ew_pen = self.network.new_edge_property("float") self.network.edge_properties["eweight_pen"] = self.ew_pen for e in self.network.edges(): self.ew_pen[e]=4/(1 + np.exp(-.05-np.fabs(float(self.network.ep.weight[e])))) self.e_marker = self.network.new_edge_property("string") self.network.edge_properties["e_marker"] = self.e_marker for e in self.network.edges(): if float(self.network.ep.weight[e]) < 0: self.e_marker[e]='bar' else: self.e_marker[e]='arrow' self.deg = self.network.degree_property_map("out") self.ecol = self.network.new_edge_property("vector<double>") self.network.edge_properties["ecol"] = self.ecol for e in self.network.edges(): col=cm.ScalarMappable(mpl.colors.Normalize(vmin=-self.edgecollim, vmax=self.edgecollim), cmap=self.edgecolmap).to_rgba(float(self.ew[e])) col=list(col) col[3]=self.edgealpha self.ecol[e]=tuple(col) self.pos = gt.graphviz_draw(self.network, overlap=False, vsize=20, sep=self.nodesep, output=None) self.control = self.network.new_edge_property("vector<double>") for e in self.network.edges(): d = np.sqrt(np.sum((self.pos[e.source()].a - self.pos[e.target()].a) ** 2)) d=d/2 self.control[e] = [0.0,0.0,0, .2*d, 0.5, d,1,0] if self.outfile is not None: gt.graph_draw(self.network,nodesfirst=False, pos=self.pos, vertex_halo=self.hl, vertex_halo_color=[.2,.2,.2,.1], edge_pen_width=self.ew_pen, edge_end_marker=self.e_marker, vorder=self.deg, edge_marker_size=10, vertex_color=self.varclass,#[.5,.5,.5,.3], edge_color=self.ecol,#[.5,.5,.5,.5], vertex_pen_width=1.5, vertex_size=self.od, vertex_text=self.nm, vcmap=(self.cmap,self.alpha), edge_control_points=self.control, vertex_fill_color=self.varclass,#deg, vertex_font_size=self.ods, vertex_text_color=[.1,.1,.1,.8], #vertex_text_position=0, output=self.outfile) def draw(self, pen_width=None, cmap=None, alpha=None, text_pos=None): """Draw network Args: pen_width (float): (Default value = None) cmap (matplotlib colormap): (Default value = None) alpha (float): (Default value = None) text_pos (float): if not None, puts node text below node (Default value = None) Returns: """ if pen_width is None: edge_pen_width=self.ew_pen else: edge_pen_width=pen_width if cmap is None: cmap=self.cmap if alpha is None: alpha=self.alpha if text_pos is None: gt.graph_draw(self.network,nodesfirst=False, pos=self.pos, vertex_halo=self.hl, vertex_halo_color=[.2,.2,.2,.1], edge_pen_width=pen_width, edge_end_marker=self.e_marker, vorder=self.deg, edge_marker_size=10, vertex_color=self.varclass,#[.5,.5,.5,.3], edge_color=self.ecol,#[.5,.5,.5,.5], vertex_pen_width=1.5, vertex_size=self.od, vertex_text=self.nm, vcmap=(cmap,alpha), edge_control_points=self.control, vertex_fill_color=self.varclass,#deg, vertex_font_size=self.ods, vertex_text_color=[.1,.1,.1,.8], output=self.outfile) else: gt.graph_draw(self.network,nodesfirst=False, pos=self.pos, vertex_halo=self.hl, vertex_halo_color=[.2,.2,.2,.1], edge_pen_width=pen_width, edge_end_marker=self.e_marker, vorder=self.deg, edge_marker_size=10, vertex_color=self.varclass,#[.5,.5,.5,.3], edge_color=self.ecol,#[.5,.5,.5,.5], vertex_pen_width=1.5, vertex_size=self.od, vertex_text=self.nm, vcmap=(cmap,alpha), edge_control_points=self.control, vertex_fill_color=self.varclass,#deg, vertex_font_size=self.ods, vertex_text_color=[.1,.1,.1,.8], vertex_text_position=text_pos, output=self.outfile)
Methods
def draw(self, pen_width=None, cmap=None, alpha=None, text_pos=None)
-
Draw network
Args
pen_width
:float
- (Default value = None)
cmap
:matplotlib colormap
- (Default value = None)
alpha
:float
- (Default value = None)
text_pos
:float
- if not None, puts node text below node (Default value = None)
Returns:
Expand source code
def draw(self, pen_width=None, cmap=None, alpha=None, text_pos=None): """Draw network Args: pen_width (float): (Default value = None) cmap (matplotlib colormap): (Default value = None) alpha (float): (Default value = None) text_pos (float): if not None, puts node text below node (Default value = None) Returns: """ if pen_width is None: edge_pen_width=self.ew_pen else: edge_pen_width=pen_width if cmap is None: cmap=self.cmap if alpha is None: alpha=self.alpha if text_pos is None: gt.graph_draw(self.network,nodesfirst=False, pos=self.pos, vertex_halo=self.hl, vertex_halo_color=[.2,.2,.2,.1], edge_pen_width=pen_width, edge_end_marker=self.e_marker, vorder=self.deg, edge_marker_size=10, vertex_color=self.varclass,#[.5,.5,.5,.3], edge_color=self.ecol,#[.5,.5,.5,.5], vertex_pen_width=1.5, vertex_size=self.od, vertex_text=self.nm, vcmap=(cmap,alpha), edge_control_points=self.control, vertex_fill_color=self.varclass,#deg, vertex_font_size=self.ods, vertex_text_color=[.1,.1,.1,.8], output=self.outfile) else: gt.graph_draw(self.network,nodesfirst=False, pos=self.pos, vertex_halo=self.hl, vertex_halo_color=[.2,.2,.2,.1], edge_pen_width=pen_width, edge_end_marker=self.e_marker, vorder=self.deg, edge_marker_size=10, vertex_color=self.varclass,#[.5,.5,.5,.3], edge_color=self.ecol,#[.5,.5,.5,.5], vertex_pen_width=1.5, vertex_size=self.od, vertex_text=self.nm, vcmap=(cmap,alpha), edge_control_points=self.control, vertex_fill_color=self.varclass,#deg, vertex_font_size=self.ods, vertex_text_color=[.1,.1,.1,.8], vertex_text_position=text_pos, output=self.outfile)
def f(self, x, A=0, E=True, exponent=2.0)
-
adjust node sizes
Args
x
A
- (Default value = 0)
E
- (Default value = True)
exponent
- (Default value = 2.0)
Returns
float
Expand source code
def f(self,x,A=0,E=True,exponent=2.0): """adjust node sizes Args: x: A: (Default value = 0) E: (Default value = True) exponent: (Default value = 2.0) Returns: float """ if E: return exponent**x + A return x+A
def get(self)
-
Set graph-tool network for drawing
Expand source code
def get(self): """Set graph-tool network for drawing""" self.network = gt.load_graph(self.dotfile) if self.strongcomponent: self.network=gt.extract_largest_component( self.network, directed=True, prune=True) if self.removeselfloops: gt.remove_self_loops(self.network) self.nm = self.network.new_vertex_property("string") nm2 = self.network.new_vertex_property("string") self.hl = self.network.new_vertex_property("bool") self.network.vertex_properties["text"] = self.nm self.network.vertex_properties["text"] = nm2 names=[] for v in self.network.vertices(): if v.out_degree() > -1: self.nm[v]=self.short_name( self.network.vp.vertex_name[v],self.preflen) nm2[v]=self.short_name( self.network.vp.vertex_name[v],self.preflen) self.hl[v]=False else: nm2[v]=self.short_name( self.network.vp.vertex_name[v],self.preflen) self.nm[v]='' self.hl[v]=False names=names+[nm2[v]] NAMES=pd.Series(list(set(names)), name='varclass').reset_index().set_index('varclass') self.varclass = self.network.new_vertex_property("float") self.network.vertex_properties["varclass"] = self.varclass for v in self.network.vertices(): self.varclass[v]=NAMES.loc[nm2[v]].values[0] self.od = self.network.new_vertex_property("float") self.network.vertex_properties["size"] = self.od for v in self.network.vertices(): self.od[v]=self.f(v.out_degree(), A=self.minsize, E=self.exponentialscaling, exponent=self.exponent)+5 self.ods = self.network.new_vertex_property("float") self.network.vertex_properties["size"] = self.ods for v in self.network.vertices(): self.ods[v]=1*self.f(v.out_degree(), A=self.minsize, E=self.exponentialscaling, exponent=1)+2 self.ew = self.network.new_edge_property("float") self.network.edge_properties["eweight"] = self.ew for e in self.network.edges(): self.ew[e]=float(self.network.ep.weight[e])**1 self.ew_pen = self.network.new_edge_property("float") self.network.edge_properties["eweight_pen"] = self.ew_pen for e in self.network.edges(): self.ew_pen[e]=4/(1 + np.exp(-.05-np.fabs(float(self.network.ep.weight[e])))) self.e_marker = self.network.new_edge_property("string") self.network.edge_properties["e_marker"] = self.e_marker for e in self.network.edges(): if float(self.network.ep.weight[e]) < 0: self.e_marker[e]='bar' else: self.e_marker[e]='arrow' self.deg = self.network.degree_property_map("out") self.ecol = self.network.new_edge_property("vector<double>") self.network.edge_properties["ecol"] = self.ecol for e in self.network.edges(): col=cm.ScalarMappable(mpl.colors.Normalize(vmin=-self.edgecollim, vmax=self.edgecollim), cmap=self.edgecolmap).to_rgba(float(self.ew[e])) col=list(col) col[3]=self.edgealpha self.ecol[e]=tuple(col) self.pos = gt.graphviz_draw(self.network, overlap=False, vsize=20, sep=self.nodesep, output=None) self.control = self.network.new_edge_property("vector<double>") for e in self.network.edges(): d = np.sqrt(np.sum((self.pos[e.source()].a - self.pos[e.target()].a) ** 2)) d=d/2 self.control[e] = [0.0,0.0,0, .2*d, 0.5, d,1,0] if self.outfile is not None: gt.graph_draw(self.network,nodesfirst=False, pos=self.pos, vertex_halo=self.hl, vertex_halo_color=[.2,.2,.2,.1], edge_pen_width=self.ew_pen, edge_end_marker=self.e_marker, vorder=self.deg, edge_marker_size=10, vertex_color=self.varclass,#[.5,.5,.5,.3], edge_color=self.ecol,#[.5,.5,.5,.5], vertex_pen_width=1.5, vertex_size=self.od, vertex_text=self.nm, vcmap=(self.cmap,self.alpha), edge_control_points=self.control, vertex_fill_color=self.varclass,#deg, vertex_font_size=self.ods, vertex_text_color=[.1,.1,.1,.8], #vertex_text_position=0, output=self.outfile)
def sfunc(self, val, SIGN=False)
-
Args
val
SIGN
- (Default value = False)
Returns
float
Expand source code
def sfunc(self,val,SIGN=False): """ Args: val: SIGN: (Default value = False) Returns: float """ if SIGN: return np.sign(val) return val
def short_name(self, s, LEN)
-
Args
s
:str
- string
LEN
:nt
- length of short name
Returns
str
- short name
Expand source code
def short_name(self,s,LEN): """ Args: s (str): string LEN (nt): length of short name Returns: str: short name """ num=len(s.split('_')) if num>1: LEN=int(LEN//num) + 1 return '_'.join([x[:LEN] for x in s.split('_')])