avrei bisogno di una mano..
Io ho nove file del genere(ne riporto solo 2):
Codice: Seleziona tutto
n271962 pos: 172 1
n280112 pos: 101 3
n289944 pos: 70 5
n412898 pos: 671 1
n280112 pos: 104 2
n281197 pos: 849 1
n414174 pos: 2015 1
n282725 pos: 207 1
n284466 pos: 286 2
n271245 pos: 2540 1
n270781 pos: 3818 2
n284344 pos: 3404 2
n278240 pos: 692 2
n278240 pos: 693 3
Codice: Seleziona tutto
n275269 pos: 1749 1
n414332 pos: 3374 1
n263625 pos: 369 4
n414364 pos: 1830 2
n288825 pos: 162 1
n264912 pos: 710 3
n292802 pos: 1407 4
n276765 pos: 34 1
n290900 pos: 1943 5
n264420 pos: 921 2
n269255 pos: 2073 1
n74983 pos: 11 4
n290919 pos: 473 2
n280873 pos: 1764 1
n289773 pos: 1559 3
Codice: Seleziona tutto
n278240 pos: 692 2
n278240 pos: 693 3La terza colonna sono invece il numero di sequenze che mi si allineano a quel codice in quella posizione.
Io ho bisogno di un unico file, in cui in prima e seconda colonna si abbiano tutti i codici con tutte le posizioni possiibli elencate, senza ripetizioni (per esempio
Codice: Seleziona tutto
n278240 pos: 692 e nelle altre 9 colonne voglio i count(cioè il numero di sequenze) che corrispondo a quel codice ed a quella posizione. Nel caso non ci fosse devo metterci uno zero.
Per esempio a
Codice: Seleziona tutto
n278240 pos: 692 Mi deve uscire un file del genere(a parte i codici in prima colonna che sono diversi):
Codice: Seleziona tutto
mmu-mir-219-1 pos: 12 0 0 0 10 0 4 0 4 2
mmu-mir-709 pos: 9 0 0 1 0 0 0 0 0 0
mmu-mir-423 pos: 58 0 0 8 3 6 1 0 1 4
mmu-mir-423 pos: 59 3 1 1 4 0 8 0 0 1
mmu-mir-3057 pos: 19 0 0 0 0 6 0 0 0 0
mmu-mir-3057 pos: 18 0 13 0 0 0 0 0 1 0
Codice: Seleziona tutto
#!/usr/bin/python
from sys import argv
from collections import defaultdict
inputfile1=open(argv[1],'r')
inputfile2=open(argv[2],'r')
inputfile3=open(argv[3],'r')
inputfile4=open(argv[4],'r')
inputfile5=open(argv[5],'r')
inputfile6=open(argv[6],'r')
inputfile7=open(argv[7],'r')
inputfile8=open(argv[8],'r')
inputfile9=open(argv[9],'r')
outputfile=open(argv[10],'w')
Lista1 = defaultdict(list)
Lista2 = defaultdict(list)
Lista3 = defaultdict(list)
Lista4 = defaultdict(list)
Lista5 = defaultdict(list)
Lista6 = defaultdict(list)
Lista7 = defaultdict(list)
Lista8 = defaultdict(list)
Lista9 = defaultdict(list)
Listaoutput=defaultdict(list)
for line in inputfile1: tokens=line.strip().split('\t')
pos = tokens[0]+tokens[1]
Lista1[pos].append((tokens[2]))
for line in inputfile2:
tokens=line.strip().split('\t')
pos = tokens[0]+tokens[1]
Lista2[pos].append((tokens[2]))
for line in inputfile3:
tokens=line.strip().split('\t')
pos = tokens[0]+tokens[1]
Lista3[pos].append((tokens[2]))
for line in inputfile4:
tokens=line.strip().split('\t')
pos = tokens[0]+tokens[1]
Lista4[pos].append((tokens[2]))
for line in inputfile5:
tokens=line.strip().split('\t')
pos = tokens[0]+tokens[1]
Lista5[pos].append((tokens[2]))
for line in inputfile6:
tokens=line.strip().split('\t')
pos = tokens[0]+tokens[1]
Lista6[pos].append((tokens[2]))
for line in inputfile7:
tokens=line.strip().split('\t')
pos = tokens[0]+tokens[1]
Lista7[pos].append((tokens[2]))
for line in inputfile8:
tokens=line.strip().split('\t')
pos = tokens[0]+tokens[1]
Lista8[pos].append((tokens[2]))
for line in inputfile9:
tokens=line.strip().split('\t')
pos = tokens[0]+tokens[1]
Lista9[pos].append((tokens[2]))
Listacompleta=list(set(Lista1.keys()) | set(Lista2.keys()) | set(Lista3.keys()) | set(Lista4.keys()) | set(Lista5.keys()) | set(Lista6.keys()) | set(Lista7.keys()) | set(Lista8.keys()) | set(Lista9.keys()))
inputfile1.close
inputfile2.close
inputfile3.close
inputfile4.close
inputfile5.close
inputfile6.close
inputfile7.close
inputfile8.close
inputfile9.close
for mir in Listacompleta:
if mir is not Lista1.keys():
Lista1[mir].append(('0'))
if mir is not Lista2.keys():
Lista2[mir].append(('0'))
if mir is not Lista3.keys():
Lista3[mir].append(('0'))
if mir is not Lista4.keys():
Lista4[mir].append(('0'))
if mir is not Lista5.keys():
Lista5[mir].append(('0'))
if mir is not Lista6.keys():
Lista6[mir].append(('0'))
if mir is not Lista7.keys():
Lista7[mir].append(('0'))
if mir is not Lista8.keys():
Lista8[mir].append(('0'))
if mir is not Lista9.keys():
Lista9[mir].append(('0'))
Creo un file unico unione dei 9 file. A questo punto dal file totale scorro i singoli 9 file, e se non trovo la chiave ci metto 0, altrimenti il counts.
Ora io non riesco a far venire poi il file unico che mi servirebbe, non riesco a farlo stampare.. mi sono bloccata.. non riesco a fargli incolonnare le 9 colonne e quindi a fare le righe con ogni riga nome codice-posizione-9 counts corrispondenti (o 0 se non ce ne sono..)..
Spero di essermi spiegata..
Grazie per l'aiuto
