A four letter alphabet {U,C,A,G} can generate $4^L$ different sequences of lenght $L$. For codons $L=3$ which gives 64 different codons, which are arranged in 20 amoniacids found in proteins, plus some stop codons.
U | C | A | G | ||
---|---|---|---|---|---|
U | Phe UUU | Ser UCU | Tyr UAU | Cys UGU | U |
Phe UUC | Ser UCC | Tyr UAC | Cys UGC | C | |
Leu UUA | Ser UCA | Stp UAA | Stp UGA | A | |
Leu UUG | Ser UCG | Stp UAG | Trp UGG | G | |
C | Leu CUU | Pro CCU | His CAU | Arg CGU | U |
Leu CUC | Pro CCC | His CAC | Arg CGC | C | |
Leu CUA | Pro CCA | Gln CAA | Arg CGA | A | |
Leu CUG | Pro CCG | Gln CAG | Arg CGG | G | |
A | Ile AUU | Thr ACU | Asn AAU | Ser AGU | U |
Ile AUC | Thr ACC | Asn AAC | Ser AGC | C | |
Ile AUA | Thr ACA | Lys AAA | Arg AGA | A | |
Met AUG | Thr ACG | Lys AAG | Arg AGG | G | |
G | Val GUU | Ala GCU | Asp GAU | Gly GGU | U |
Val GUC | Ala GCC | Asp GAC | Gly GGC | C | |
Val GUA | Ala GCA | Glu GAA | Gly GGA | A | |
Val GUG | Ala GCG | Glu GAG | Gly GGG | G |
There is some degree of regularity in the degeneracy of the Aminoacids:
import networkx as nx
import matplotlib.pyplot as plt
import math as mth
mu=1
aminodes={}
abc={1: 'A', 2: 'G', 3: 'U', 4:'C'}
mu=pow(4,3)
cnt=1
for i in range (1,5):
for j in range (1,5):
for k in range (1,5):
amn=abc[i]+abc[j]+abc[k]
aminodes[cnt]=amn
cnt=cnt+1
#print amn
#print aminodes
#Aminoacid (Color) Association.
ACC={'Phe': ['UUU', 'UUC'],
'Leu': ['UUA','UUG','CUU','CUC','CUA','CUG'],
'Ile': ['AUU', 'AUC', 'AUA'],
'Met': ['AUG'],
'Val': ['GUU', 'GUC','GUA','GUG'],
'Ser': ['UCU','UCC','UCA','UCG','AGU','AGC'],
'Pro': ['CCU','CCC','CCA','CCG'],
'Thr': ['ACU','ACC','ACA','ACG'],
'Ala': ['GCU','GCC','GCA','GCG'],
'Tyr': ['UAU','UAC'],
'Stop':['UAA','UAG','UGA'],
'Cys': ['UGU','UGC'],
'Trp': ['UGG'],
'His': ['CAU','CAC'],
'Gln': ['CAA','CAG'],
'Arg': ['CGU','CGC','CGA','CGG','AGA','AGG'],
'Asn': ['AAU','AAC'],
'Lys': ['AAA','AAG'],
'Asp': ['GAU','GAC'],
'Glu': ['GAA','GAG'],
'Gly': ['GGU','GGC','GGA','GGG']}
#print len(ACC)
ACOL={}
ALABELX={}
for i in aminodes.keys():
asrc=aminodes[i]
fl=0
dx=1.0
for j in ACC.keys():
for k in ACC[j]:
atgt=k
if asrc==atgt:
ACOL[i]=dx
ALABELX[i]=j
fl=1
break
if fl==1:
break
dx+=1.0
#print aminodes
#print ALABELX
#print ACOL
SUMMARY={}
for i in aminodes.keys():
zk=[]
zk.append(aminodes[i])
zk.append(ALABELX[i])
zk.append(ACOL[i])
SUMMARY[i]=zk
#print len(ACC)
#print ACC
#print SUMMARY
AMADJ={}
for i in aminodes.keys():
ik=[]
x1=aminodes[i]
for j in aminodes.keys():
x2=aminodes[j]
#print x1
#print x2
hd=0
for sx, sy in zip(x1,x2):
if sx!=sy:
hd+=1
#print hd
if(hd==1):
ik.append(j)
#raw_input()
AMADJ[i]=ik
#print AMADJ
import networkx as nx
import matplotlib.pyplot as plt
import math as mth
#print nx.__version__
G=nx.Graph()
for i in AMADJ.keys():
ni=i
mu=AMADJ[i]
#print("Values: ")
for j in mu:
G.add_edge(ni,j)
#pos=nx.spring_layout(G, scale=1, iterations=100)
#pos=nx.spring_layout(G, scale=1, iterations=100)
pos={}
Pi=mth.pi
N=0
for i in ACC.keys():
xo=15*mth.sin(N*(2*Pi/21))
yo=15*mth.cos(N*(2*Pi/21))
#print i
#print ACC[i]
zx=ACC[i]
LK=len(zx)
px=[]
#print len(zx)
for j in zx:
for k in SUMMARY.keys():
vx=SUMMARY[k][0]
#print vx
if vx==j:
#print vx
px.append(k)
#print px
jn=0
for kx in px:
x=1.3*mth.sin(jn*(2*Pi)/LK)
y=1.3*mth.cos(jn*(2*Pi)/LK)
#mu=np.array((x+xo),(y+yo))
pos[kx]=[x+xo,y+yo]
#array()
jn=jn+1
#raw_input()
N=N+1
#print pos
plt.figure(figsize=(20,20))
plt.axis('off')
plt.axis('equal')
nx.draw_networkx_nodes(G,pos,node_size=1000, label='F',alpha=0.7,node_color=ACOL.values())
nx.draw_networkx_labels(G,pos,labels=aminodes,font_size=10)
nx.draw_networkx_edges(G,pos)
#nx.draw_networkx(G,pos)
nx.write_adjlist(G,"aminodesadj.dat")
#fin=open("aminodesadj.dat","r")
#fout=open("amncytnet.dat","w")
#line=fin.readline()
#while line:
# r=line.split()
# print r
#while line:
# r=line.split()
# print r
# raw_input("nxt")
# for i in r:
# if (int(i)!=int(r[0])):
# fout.write("%d %d\n"%(int(r[0]),(int(i)))
##fout.write(" %s"%'pp')
#fout.write(" %d"%int(i))
#fout.write("\n")
# line=fin.readline()
#fout.close()
#fin.close()
#raw_input
fout=open("labels.dat","w")
for i in aminodes.keys():
fout.write("%d %s\n"%(i, aminodes[i]))
fout.close()
fout=open("amicol.dat","w")
for i in aminodes.keys():
fout.write("%d %s\n"%(i, ACOL[i]))
fout.close()
#print AMADJ
#print aminodes
#print ACC
#print SUMMARY
nsets={}
#raw_input()
for i in ACC.keys():
nseti=[]
for j in SUMMARY.keys():
mu=SUMMARY[j][1]
#print mu
if mu==i:
nseti.append(j)
nsk='ns'+str(i)
nsets[nsk]=nseti
#print nsets
Sizes=[]
for h in nsets.keys():
Sizes.append(len(nsets[h]))
#print nsets
#print Sizes
import numpy as np
xmin=min(Sizes)
xmax=max(Sizes)
#Xn=np.linspace(xmin-1,xmax+1)
z,h=np.histogram(Sizes,6,range=(xmin,xmax+1))
#print z
#print h
hx=[]
for k in range (1,len(h)):
hx.append(0.5+k)
#print hx
j=1
NG={}
for n in nsets.keys():
a='ns'+str(j)
NG[a]=G.subgraph(nsets[n])
j=j+1
Un=nx.Graph()
for z in NG.keys():
Un=nx.union(NG[z],Un)
#print Un.nodes()
plt.figure(figsize=(20,20))
plt.axis('off')
plt.axis('equal')
nx.draw_networkx_nodes(Un,pos,node_size=1000, label='F',alpha=0.7,node_color=ACOL.values())
nx.draw_networkx_labels(Un,pos,labels=aminodes,font_size=10)
nx.draw_networkx_edges(Un,pos)
<matplotlib.collections.LineCollection at 0x7fe012e5e710>
adjx={}
k=1
for n in nsets.keys():
adjx[k]=n
k=k+1
print adjx
{1: 'nsAsp', 2: 'nsLeu', 3: 'nsPro', 4: 'nsGly', 5: 'nsArg', 6: 'nsStop', 7: 'nsThr', 8: 'nsPhe', 9: 'nsVal', 10: 'nsAsn', 11: 'nsAla', 12: 'nsSer', 13: 'nsGlu', 14: 'nsLys', 15: 'nsGln', 16: 'nsMet', 17: 'nsCys', 18: 'nsHis', 19: 'nsTrp', 20: 'nsTyr', 21: 'nsIle'}
#print nsets
#print adjx
ANxNy={}
posk={}
colk={}
i=1
LK=len(nsets[adjx[i]])
fnm='NNETS/'+str(i)+'/LABELS.dat'
fout=open(fnm,'w')
for r in aminodes.keys():
fout.write('%d %s\n'%(int(r),aminodes[r]))
fout.close()
jn=0
cl=[]
for ix in nsets[adjx[i]]:
#print ix
cl.append(ACOL[ix])
x=1.3*mth.sin(jn*(2*Pi)/LK)
y=1.3*mth.cos(jn*(2*Pi)/LK)
jn=jn+1
#mu=np.array((x+xo),(y+yo))
posk[ix]=[x,y]
colk[adjx[i]]=cl
#print nsets
#raw_input()
#print nsets[adjx[i]]
#print colk[adjx[i]]
#print posk
N=0
cl=[]
for j in adjx.keys():
#print j
#raw_input()
#print adjx[j]
if adjx[j]!=adjx[i]:
Xo=15*mth.sin(N*(2*Pi/20))
Yo=15*mth.cos(N*(2*Pi/20))
LK=len(nsets[adjx[j]])
cl=[]
jn=0
for jx in nsets[adjx[j]]:
cl.append(ACOL[jx])
x=1.3*mth.sin(jn*(2*Pi)/LK)
y=1.3*mth.cos(jn*(2*Pi)/LK)
jn=jn+1
posk[jx]=[x+Xo,y+Yo]
colk[adjx[j]]=cl
N=N+1
ANxNy[j]=G.subgraph(nsets[adjx[i]]+nsets[adjx[j]])
qs1=adjx[i].replace("ns","")
qs1="NNETS/"+str(i)+"/"
qs2=adjx[j].replace("ns","")
qs=qs1+qs2+".gml"
#print qs
nx.write_gml(ANxNy[j],qs)
#print colk
plt.figure(figsize=(20,20))
plt.axis('off')
plt.axis('equal')
nx.draw_networkx_nodes(Un,posk,node_size=1000, label='F',alpha=0.7,node_color=ACOL.values())
nx.draw_networkx_labels(Un,posk,labels=aminodes,font_size=10)
nx.draw_networkx_edges(Un,posk)
#print len(adjx.keys())
#print adjx.keys()
#print len(ANxNy.keys())
#print ANxNy.keys()
#print nsets[adjx[i]]
#print colk[adjx[i]]
#raw_input()
##################
#plt.figure(figsize=(20,20))
#plt.axis('off')
#plt.axis('equal')
#nx.draw_networkx_nodes(ANxNy[2],posk,nodelist=nsets[adjx[i]], node_size=1000,alpha=0.7,node_color=colk[adjx[i]])
#nx.draw_networkx_labels(ANxNy[2],posk,labels=aminodes,font_size=10)
for x in ANxNy.keys():
# nx.draw_networkx_labels(ANxNy[x],posk,labels=aminodes,font_size=10)
nx.draw_networkx_edges(ANxNy[x],posk)
for i in range(2,1+len(adjx.keys())):
#print i
#print aminodes
ANxNy={}
#print aminodes
posk={}
colk={}
#i=1
LK=len(nsets[adjx[i]])
fnm='NNETS/'+str(i)+'/LABELS.dat'
fout=open(fnm,'w')
for r in aminodes.keys():
fout.write('%d %s\n'%(int(r),aminodes[r]))
fout.close()
jn=0
cl=[]
for ix in nsets[adjx[i]]:
#print ix
cl.append(ACOL[ix])
x=1.3*mth.sin(jn*(2*Pi)/LK)
y=1.3*mth.cos(jn*(2*Pi)/LK)
jn=jn+1
#mu=np.array((x+xo),(y+yo))
posk[ix]=[x,y]
colk[adjx[i]]=cl
N=0
cl=[]
for j in adjx.keys():
#print j
#raw_input()
#print adjx[j]
if adjx[j]!=adjx[i]:
Xo=15*mth.sin(N*(2*Pi/20))
Yo=15*mth.cos(N*(2*Pi/20))
LK=len(nsets[adjx[j]])
cl=[]
jn=0
for jx in nsets[adjx[j]]:
cl.append(ACOL[jx])
x=1.3*mth.sin(jn*(2*Pi)/LK)
y=1.3*mth.cos(jn*(2*Pi)/LK)
jn=jn+1
posk[jx]=[x+Xo,y+Yo]
colk[adjx[j]]=cl
N=N+1
ANxNy[j]=G.subgraph(nsets[adjx[i]]+nsets[adjx[j]])
qs1=adjx[i].replace("ns","")
qs1="NNETS/"+str(i)+"/"
qs2=adjx[j].replace("ns","")
qs=qs1+qs2+".gml"
#print qs
nx.write_gml(ANxNy[j],qs)
plt.figure(figsize=(20,20))
plt.axis('off')
plt.axis('equal')
nx.draw_networkx_nodes(Un,posk,node_size=1000, label='F',alpha=0.7,node_color=ACOL.values())
nx.draw_networkx_labels(Un,posk,labels=aminodes,font_size=10)
nx.draw_networkx_edges(Un,posk)
##################
for x in ANxNy.keys():
nx.draw_networkx_edges(ANxNy[x],posk)
NNETFILE='AMNADJ.dat'
GAM=nx.Graph()
fin=open(NNETFILE,'r')
line=fin.readline()
#mu=line.split()
#print mu[0]
#print mu[1]
while line:
mu=line.split()
e=(mu[0],mu[1])
GAM.add_edge(*e)
line=fin.readline()
fin.close()
#print 'hola'
print GAM.nodes()
DG=nx.degree(GAM)
DGH=nx.degree_histogram(GAM)
r=nx.degree_pearson_correlation_coefficient(GAM)
knni=nx.average_neighbor_degree(GAM)
knn=nx.k_nearest_neighbors(GAM)
avdegk=nx.average_degree_connectivity(GAM)
kx=[]
Pk=[]
for index, item in enumerate(DGH):
kx.append(int(index))
Pk.append(int(item))
#print int(index)
#print int(item)
krx=[]
NNk=[]
for i in knn.keys():
krx.append(float(i))
NNk.append(float(knn[i]))
print r
['CYS', 'HIS', 'GLN', 'VAL', 'MET', 'ILE', 'PRO', 'LYS', 'THR', 'PHE', 'GLU', 'GLY', 'ASP', 'STP', 'LEU', 'ARG', 'TRP', 'ALA', 'ASN', 'TYR', 'SER'] -0.0876475930972
fig, axes = plt.subplots(1, 1, figsize=(20, 8))
axes.plot(kx, Pk, 'g*-')
axes.set_ylabel("P(k)",fontsize=26)
axes.tick_params(axis='x', labelsize=30)
axes.tick_params(axis='y', labelsize=30)
axes.set_xlabel("Degree k",fontsize=26)
axes.set_xlim([0,15])
axes.set_ylim([0,10])
fig, axes = plt.subplots(1, 1, figsize=(20, 8))
axes.tick_params(axis='x', labelsize=30)
axes.tick_params(axis='y', labelsize=30)
axes.plot(krx, NNk,'g*-')
axes.set_ylabel("NN(k)",fontsize=26)
axes.set_xlabel("Degree k",fontsize=26)
axes.set_xlim([0,21])
(0, 21)
plt.figure(figsize=(20,15))
plt.axis('off')
plt.axis('equal')
#nx.draw_networkx_nodes(Un,posk,node_size=1000, label='F',alpha=0.7,node_color=ACOL.values())
#nx.draw_networkx_labels(Un,posk,labels=aminodes,font_size=10)
nx.draw_networkx(GAM,node_size=900)