Ejercicios Power Law & Scale Free Network

Power Law Distribution

Grafique en Log-Log la distribución de grados de una red de escala libre (una red real o creada).

Calcule el coeficiente de la power law graficada.


In [11]:
import networkx as nx
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from scipy.stats import powerlaw
%matplotlib inline
sns.set()

In [ ]:
edges = []
for line in open('CA-HepTh.txt'):
    if line[0] != '#':
        edge = line.replace('\n','').split('\t')
        edges.append((edge[0],edge[1]))
        
G=nx.Graph()
G.add_edges_from(edges)

In [ ]:
degrees = list(G.degree().values())

In [4]:
sns.distplot(degrees)


C:\Users\Camil\Anaconda3\lib\site-packages\statsmodels\nonparametric\kdetools.py:20: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
  y = X[:m/2+1] + np.r_[0,X[m/2+1:],0]*1j
Out[4]:
<matplotlib.axes._subplots.AxesSubplot at 0x154f0dd9860>

In [19]:
logs = np.log(degrees)
plt.hist(logs, log=True)

e, l, s = powerlaw.fit(degrees)
e, l, s


Out[19]:
(0.19089157812343649, 0.99999999999999978, 71.209262276837279)

In [15]:
sns.distplot(powerlaw.rvs(e, l, s, size=100000))


C:\Users\Camil\Anaconda3\lib\site-packages\statsmodels\nonparametric\kdetools.py:20: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
  y = X[:m/2+1] + np.r_[0,X[m/2+1:],0]*1j
Out[15]:
<matplotlib.axes._subplots.AxesSubplot at 0x154f130a048>

Generative Network Model

Simulación de Red de Citaciones

Defina un número de papers N. Los papers van a ser publicados en orden (primero 1, después 2, etc.) Defina el promedio de citaciones de cada paper (e.g. 3 citaciones). Cree un grupo inicial de papers. Cada nuevo paper tendrá c citaciones. Esas citaciones van a ser a papers ya existentes y proporcional al número de papers que citan a cada paper. Se crearon Hubs? Cuál es la distribución de grados de la red?


In [ ]:

Simulación Red de Proteinas

Cuando un gen se duplica y evoluciona, el nuevo gen mantiene interacción a las mismas proteínas con las que trabaja el gen inicial y a algunas nuevas. El gen original pierde algunas de sus interacciones. Genere una red aleatoria y después cree N genes que sigan este esquema.


In [ ]:

Se repite la historia?

Repetir alguno de los ejercicios anteriores varias veces. Siempre es el mismo nodo el que termina teniendo el mayor número de enlaces?


In [ ]:


In [ ]: