Autore |
Discussione |
|
anty77
Nuovo Arrivato
8 Messaggi |
Inserito il - 02 marzo 2010 : 14:25:17
|
Ciao, qualcuno è sarebbe così gentile da aiutarmi a fare un esercizio di un esame su python. Non avendo pratica nella programmazione riscontro difficoltà nello svolgimento.
L'esercizio che dovrei svolgere è di bioinformatica:
Script python che riceve in imput un file di sequenze nucleotidiche in formato fasta e restituisca in output un file con le stesse sequenze, nelle quali ciascun codone sia modificato in modo random senza alterare la corrispondente sequenza aminoacidica
Qualcuno sarebbe cosi gentile da aiutarmi?
comincio con la lettura e la stampa del file
file=open('1.fasta','r') S=file.readlines() print S
e poi mi blocco
Grazie
|
|
|
dallolio_gm
Moderatore
Prov.: Bo!
Città: Barcelona/Bologna
2445 Messaggi |
Inserito il - 02 marzo 2010 : 16:44:42
|
Innanzitutto prendiamo come esempio un file fasta:
>seq1
ACACAGTGCTAC
CGGCGATATATT
CACAC
La prima cosa da fare é distinguere le linee che contengono l'intestazione (ovvero iniziano con '>') da quelle che contengono la sequenza. Per farlo, puoi prendere il primo carattere di ogni linea e con '>':
for line in S:
# verifica che la linea corrente non sia vuota
if line.strip() != '':
if line[0] == '>':
# questa é una linea di intestazione
elif line[0].upper() in ('A', 'C', 'G', 'T', 'N'):
# questa linea contiene una sequenza
|
Il mio blog di bioinformatics (inglese): BioinfoBlog Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-) |
|
|
anty77
Nuovo Arrivato
8 Messaggi |
Inserito il - 02 marzo 2010 : 16:58:48
|
ok, successivamente come faccio a scorrere le line a 3 a 3?penso si possa fare con un ciclo for... |
|
|
dallolio_gm
Moderatore
Prov.: Bo!
Città: Barcelona/Bologna
2445 Messaggi |
Inserito il - 02 marzo 2010 : 18:03:44
|
per scorrere la seq 3 a 3 devi fare un loop in range(0, len(seq)-2, 3) e usare il valore ottenuto come indice. |
Il mio blog di bioinformatics (inglese): BioinfoBlog Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-) |
|
|
anty77
Nuovo Arrivato
8 Messaggi |
Inserito il - 02 marzo 2010 : 18:24:23
|
faccio cosi:
for tripletta in range(0, len(line)-2, 3): triplet = line[tripletta, tripletta+3] print triplet
ma mi da errore come mai? grazie |
|
|
dallolio_gm
Moderatore
Prov.: Bo!
Città: Barcelona/Bologna
2445 Messaggi |
Inserito il - 02 marzo 2010 : 18:34:46
|
é line[triplette:tripletta+3], non line[tripletta,tripletta+3] |
Il mio blog di bioinformatics (inglese): BioinfoBlog Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-) |
|
|
anty77
Nuovo Arrivato
8 Messaggi |
Inserito il - 02 marzo 2010 : 19:00:18
|
ok grazie l'ultimo passo è sostituire i codoni in modo random facendo riferimento alla tabbel del codice genetico come posso fare? |
|
|
dallolio_gm
Moderatore
Prov.: Bo!
Città: Barcelona/Bologna
2445 Messaggi |
Inserito il - 02 marzo 2010 : 22:14:03
|
beh, puoi dare una occhiata al modulo random e random.choice.. |
Il mio blog di bioinformatics (inglese): BioinfoBlog Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-) |
|
|
|
Discussione |
|