Skip to content

Instantly share code, notes, and snippets.

@gnuton
Last active February 29, 2020 22:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gnuton/5d4a2cb921ce9e34f5269d4145e794a8 to your computer and use it in GitHub Desktop.
Save gnuton/5d4a2cb921ce9e34f5269d4145e794a8 to your computer and use it in GitHub Desktop.
Chimera version 0.1
def leggi_file(nome_file):
file = open(nome_file, 'r')
lineee = file.read()
file.close()
return linee
def calcola_percentuali(linee):
diz={}
for line in linee:
x = line.strip().split(" ")
key=x[1]
valore=x[0]
if key in diz:
# se leggo una nuova linea e PCR10_1 e' gia nel dizionario, sommo il valore nuovo a quello nel diz
vecchio_valore=diz[key]
diz[key]= vecchio_valore + valore
else:
diz[key]=valore
diz_perc={}
for key in diz.keys():
prefix_key="_".join(key.split("_")[:-1]) # "PCR10"
tot=0
for k in diz.keys():
# prefix_key=PCR10, k=PCR10_2
if prefix_key not in k:
continue
tot += float(diz[k])
# print tot
val=float(diz[key])
val_perc=round(val/tot*100, 2)
diz_perc[key]=val_perc
return diz_perc
def filtra_valori_nel_diz_minori_del_cutoff(diz_perc, cutoff):
# qui calcola le frequenza
diz_cutoff={}
for x in diz_perc.items():
chiave = x[0]
valore = x[1]
if valore >= cutoff:
diz_cutoff[chiave]=valore
return diz_cutoff
def filtra_valori_nel_diz_maggiori_del_cutoff(diz_perc, cutoff):
# qui calcola le frequenza
diz_cutoff={}
for x in diz_perc.items():
chiave = x[0]
valore = x[1]
if valore ,= cutoff:
diz_cutoff[chiave]=valore
return diz_cutoff
### PADRE
cutoff_padre=30.00
linee_padre = leggi_file('DNA_11_PADRE_r0.fq_align.counts')
diz_perc_padre = calcola_percentuali(linee_padre)
diz_perc_filtrati_padre = filtra_valori_nel_diz_minori_del_cutoff(diz_perc_padre, cutoff_padre)
### FIGLIO
cutoff_figlio=0.1
linee_figlio = leggi_file('il file del figlio')
diz_perc_figlio = calcola_percentuali(linee_figlio)
diz_perc_filtrati_figlio = filtra_valori_nel_diz_maggiori_del_cutoff(diz_perc_figlio, cutoff_figlio)
### DONATORE
cutoff_donatore=0.1
linee_donatore = leggi_file('DNA_13_r0.fq_align.counts')
diz_perc_donatore = calcola_percentuali(linee_donatore)
diz_perc_filtrati_donatore = filtra_valori_nel_diz_maggiori_del_cutoff(diz_perc_donatore, cutoff_donatore)
### CONTINUA TU :D
#####PARTE 3: CONFRONTO RIC VS DON
#-->
#### CREA UNA LISTA CON APLOT. INFORMAT
Lista_APLO_INFORMATIVO=[]
for x in diz_perc_RIC_frequenti:
for y in diz_perc_DON_pocofrequenti:
if x== y:
Lista_APLO_INFORMATIVO.append(x)
print Lista_APLO_INFORMATIVO
#####PARTE 4: CALCOLI QUANTIFICAZIONE CHIMERISMO:
#####PARTE 4.1: APRI FILE CHIMERA IDENTIFICA N READS APLO_INFORMATIVI
file_CHIM= open('Sc_I_0.1_r0.fq_align.counts','r')
linee_CHIM=[]
for line in file_CHIM:
linee_CHIM.append(line)
#print linee_CHIM
diz={}
for line in linee_CHIM:
x = line.strip().split(" ")
key=x[1]
valore=x[0]
diz[key]=valore
#print diz
diz_perc_CHIM={}
for x in diz.items():
for y in Lista_APLO_INFORMATIVO:
if x[0]==y:
diz_perc_CHIM[x[0]]=x[1]
print diz_perc_CHIM
#####PARTE 4.2 CREA DIZIONARIO INFORMATIVI
diz_conte_informativi={}
for x in diz_perc_RIC.items():
for y in diz_perc_CHIM.keys():
if y==x[0]:
diz_conte_informativi[y]=x[1]
#str(x[0])#==str(y)
#lst_conte_informativi.append(x[0:])
print diz_conte_informativi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment