Commit d5cae6ac authored by Rafael Artinano's avatar Rafael Artinano

update in similarity with aa

parent 3c565e97
This diff is collapsed.
......@@ -212,6 +212,166 @@ def patronesComun(patronesComun):
# index=False)
def patronesComunClas(patronesComun,name):
# Leer el archivo CSV y cargar los datos en una lista de diccionarios
registros = []
cl=pd.read_excel("alzheimer_protein_class 2.xlsx")
#cl=substitute_or_remove_prot_id(cl,"r")
#data2=data.copy()
cli=cl.groupby('protein_id')
di=[]
do={}
for k,v in cli:
for index,row in v.iterrows():
di.append(row['class_name'])
do[k]=di
di=[]
class_dict=do
with open("clases/"+name+"/patronesIdenticos.csv", 'r') as file:
reader = csv.DictReader(file)
for row in reader:
registros.append(row)
# Diccionario para almacenar la cantidad de patrones únicos por proteína
patrones_por_proteina = {}
posiciones_patron={}
# Iterar sobre los registros y extraer los patrones únicos de cada proteína
for registro in registros:
proteina = registro['Proteina']
patron = registro['Patron']
posicion = registro['Posiciones']
if proteina not in patrones_por_proteina:
patrones_por_proteina[proteina] = set()
patrones_por_proteina[proteina].add(patron)
pp=[oo for oo in ast.literal_eval(posicion) if oo is not '[' and oo is not ']']
if proteina not in posiciones_patron:
posiciones_patron[proteina]={}
posiciones_patron[proteina][patron]=[]
for u in pp:
for kaa in range(0,len(patron)):
posiciones_patron[proteina][patron].append(kaa+int(u))
# Diccionario para almacenar las proteinas que tienen en común cada par de proteinas
proteinas_comunes = {}
rr=[]
df_p = pd.read_excel("data_nervous_genes_xf.xlsx")
#df_p = pd.read_excel("proteinasClase_PC00060.xlsx")
#df_p=substitute_or_remove_prot_id(df_p,"r")
proteinas_dict2 = dict(df_p[['protein_id','protein_sequence']].values)
pares_proteinas_procesados = set()
# Filtrar las proteínas que tienen al menos 10 patrones únicos en común
for proteina1, patrones1 in patrones_por_proteina.items():
for proteina2, patrones2 in patrones_por_proteina.items():
if proteina1 != proteina2 and (proteina2, proteina1) not in pares_proteinas_procesados:
patrones_comunes = patrones1.intersection(patrones2)
if len(patrones_comunes) >= patronesComun:
par_proteinas = (proteina1, proteina2)
proteinas_comunes[par_proteinas] = patrones_comunes
pares_proteinas_procesados.add(par_proteinas)
output = []
df_b = pd.read_csv("AllProteins_%Similitud.csv")
output2=[]
proteinas_dict = df_b.set_index(['Proteina1', 'Proteina2'])['Similaridad'].to_dict()
outbreak=[]
first=True
first2=True
for par_proteinas, patrones_comunes in proteinas_comunes.items():
proteina1, proteina2 = par_proteinas
pattern_lengths = {}
pattern_l={}
Antecedentes={}
if(proteina1 == 'Q13753' and proteina2 == 'P07550'):
print(patrones_comunes)
for pattern in patrones_comunes:
length = len(pattern)
key = f'Longitud {length}'
if key in pattern_lengths:
pattern_lengths[key].append([pattern])
Add=posiciones_patron[proteina1][pattern]
if(proteina1 == 'Q13753' and proteina2 == 'P07550'):
print(Add)
if proteina1 not in Antecedentes:
Antecedentes[proteina1]=set()
lex=len(Antecedentes[proteina1] & set(Add))
Antecedentes[proteina1].update(Add)
pattern_l[key][0]+=len(Add)-lex
Add=posiciones_patron[proteina2][pattern]
if proteina2 not in Antecedentes:
Antecedentes[proteina2]=set()
lex=len(Antecedentes[proteina2] & set(Add))
Antecedentes[proteina2].update(Add)
pattern_l[key][1]+=len(Add)-lex
#sprint(length*len(Posic))
else:
pattern_lengths[key] = [[pattern]]
Add=posiciones_patron[proteina1][pattern]
if proteina1 not in Antecedentes:
Antecedentes[proteina1]=set()
lex=len(Antecedentes[proteina1] & set(Add))
#print(lex)
#print(Antecedentes)
Antecedentes[proteina1].update(Add)
Add2=posiciones_patron[proteina2][pattern]
if proteina2 not in Antecedentes:
Antecedentes[proteina2]=set()
lex2=len(Antecedentes[proteina2] & set(Add2))
Antecedentes[proteina2].update(Add2)
pattern_l[key]=[len(Add)-lex,len(Add2)-lex2]
sorted_pattern_lengths = dict(sorted(pattern_lengths.items(), key=lambda x: int(x[0][9:]), reverse=True))
if proteina1 != proteina2:
prot=[proteinas_dict2[proteina1],proteinas_dict2[proteina2]]
if Antecedentes != {} and(len(prot[0])>0 and len(prot[1])>0):
output.append([sorted_pattern_lengths, proteina1, proteina2,class_dict[proteina1] if proteina1 in class_dict else "N/A",class_dict[proteina2] if proteina2 in class_dict else "N/A"])
df = pd.DataFrame(output, columns=['Patrones', 'Proteina1', 'Proteina2',"classesProt1","classesProt2"])
output=[]
if(first2):
df.to_csv('clases/'+name+'/Metrica_patronesComunes.csv',
index=False)
first2=False
else:
df.to_csv('clases/'+name+'/Metrica_patronesComunes.csv',index=False,header=False,mode='a')
#else:
#output.append([sorted_pattern_lengths, proteina1, proteina2,
# 'N/A'])
#print("prot1 : "+proteina1 + " : "+str(len(Antecedentes[proteina1])))
#print("prot2 : "+proteina2 + " : " + str(len(Antecedentes[proteina2]) ))
if Antecedentes != {} and(len(prot[0])>0 and len(prot[1])>0):
output2.append([proteina1,proteina2, (max(len(Antecedentes[proteina1])/len(prot[0]),len(Antecedentes[proteina2])/len(prot[1]))*100),class_dict[proteina1] if proteina1 in class_dict else "N/A",class_dict[proteina2] if proteina2 in class_dict else "N/A"])
df2=pd.DataFrame(output2,columns=['proteina1','proteina2','%Coincidencia',"classesProt1","classesProt2"])
output2=[]
if(first):
df2.to_csv('clases/'+name+'/Metrica_Coincidencia.csv',index=False)
first=False
else:
df2.to_csv('clases/'+name+'/Metrica_Coincidencia.csv',index=False,header=False,mode='a')
#output2=sorted(output2, key = lambda x: int(x[2]))
#df2=pd.DataFrame(output2,columns=['proteina1','proteina2','%Coincidencia'])
#df2.to_csv('resultados/Metrica_Coincidencia.csv',
# index=False)
def remplazar_sequence_for_ID(output):
df_b = pd.read_excel("data_nervous_genes_xf.xlsx")
#df_b = pd.read_excel("proteinasClase_PC00060.xlsx")
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment