@@ -172,22 +172,38 @@ def degrees_dataframe(self):
172
172
Returns the network's degree distributions as a dataframe.
173
173
"""
174
174
175
- degrees_dataframe = pd .DataFrame (columns = ['vertex' , 'total_degree' , 'in_degree' , 'out_degree' ])
176
- total_degrees = Network .degree (self , mode = 'all' )
177
- in_degrees = Network .degree (self , mode = 'in' )
178
- out_degrees = Network .degree (self , mode = 'out' )
175
+ isdir = self .is_directed ()
176
+
177
+ if isdir == False :
178
+ degrees_dataframe = pd .DataFrame (columns = ['vertex' , 'degree' ])
179
+ total_degrees = Network .degree (self , mode = 'all' )
180
+ else :
181
+
182
+ degrees_dataframe = pd .DataFrame (columns = ['vertex' , 'total_degree' , 'in_degree' , 'out_degree' ])
183
+ total_degrees = Network .degree (self , mode = 'all' )
184
+ in_degrees = Network .degree (self , mode = 'in' )
185
+ out_degrees = Network .degree (self , mode = 'out' )
179
186
180
187
index = 0
181
188
for v in self .vs :
182
189
if 'name' in v .attributes ().keys ():
183
190
item = v ['name' ]
184
191
else :
185
192
item = v .index
186
- degrees_dataframe .loc [index ] = [item , total_degrees [index ], in_degrees [index ], out_degrees [index ]]
193
+
194
+ degrees_dataframe .loc [index , 'vertex' ] = item
195
+
196
+ if isdir == False :
197
+ degrees_dataframe .loc [index , 'degree' ] = total_degrees [index ]
198
+ degrees_dataframe = degrees_dataframe .sort_values ('degree' , ascending = False )
199
+ else :
200
+ degrees_dataframe .loc [index , 'total_degree' ] = total_degrees [index ]
201
+ degrees_dataframe .loc [index , 'in_degree' ] = in_degrees [index ]
202
+ degrees_dataframe .loc [index , 'out_degree' ] = out_degrees [index ]
203
+ degrees_dataframe = degrees_dataframe .sort_values ('total_degree' , ascending = False )
187
204
index += 1
188
205
189
206
degrees_dataframe .index .name = 'vertex_id'
190
- degrees_dataframe = degrees_dataframe .sort_values ('total_degree' , ascending = False )
191
207
192
208
return degrees_dataframe
193
209
@@ -380,7 +396,18 @@ def coreness_stats(self):
380
396
381
397
def community_detection (self , algorithm = 'fastgreedy' ):
382
398
383
- """Identifies communities in the network. Gives the option of using different algorithms."""
399
+ """Identifies communities in the network. Gives the option of using different algorithms.
400
+
401
+ Parameters
402
+ ----------
403
+ algorithm : str
404
+ name of community detection algorithm. Options:
405
+ 1. betweenness
406
+ 2. fastgreedy
407
+ 3. eigenvector
408
+ 4. spinglass
409
+ 5. walktrap
410
+ """
384
411
385
412
if (algorithm == None ) or (algorithm == '' ):
386
413
algorithm = input ('Algorithm must be specified. Options: 1. betweenness, 2. fastgreedy, 3. eigenvector, 4. spinglass, 5. walktrap.:' )
@@ -465,20 +492,19 @@ def weighted_density(self):
465
492
return weighted_density
466
493
467
494
468
- def weighted_degrees_dataframe (self , direction = 'all' ):
495
+ def weighted_degrees_dataframe (self ):
469
496
470
497
"""Returns the network's weighted degrees distribution as a dataframe."""
471
498
499
+ # Checks if network is directed
500
+
472
501
473
502
# Checks if network is weighted
474
503
475
504
if 'weight' not in self .es .attributes ():
476
- degrees_dataframe = self .degrees_dataframe (direction = direction )
477
- degrees_dataframe ['weighted_degree' ] = degrees_dataframe ['degree' ]
478
- degrees_dataframe = degrees_dataframe .drop ('degree' , axis = 1 )
505
+ degrees_dataframe = self .degrees_dataframe ().rename (columns = {'total_degree' :'weighted_total_degree' , 'in_degree' : 'weighted_in_degree' , 'out_degree' : 'weighted_out_degree' })
479
506
return degrees_dataframe
480
-
481
-
507
+
482
508
else :
483
509
484
510
degrees_dataframe = pd .DataFrame (columns = ['vertex' , 'weighted_degree' ])
@@ -498,13 +524,13 @@ def weighted_degrees_dataframe(self, direction = 'all'):
498
524
return degrees_dataframe
499
525
500
526
501
- def weighted_degrees_stats (self , direction = 'all' ):
527
+ def weighted_degrees_stats (self ):
502
528
503
529
"""
504
530
Returns frequency statistics for the weighted degree distribution.
505
531
"""
506
532
507
- df = self .weighted_degrees_dataframe (direction = direction )
533
+ df = self .weighted_degrees_dataframe ()
508
534
509
535
if df is not None :
510
536
return df ['weighted_degree' ].describe ()
0 commit comments