EMBL (http://www.ebi.ac.uk/cgi-bin/sva/sva.pl/) è una banca di sequenze nucleotidiche sviluppata da EMBL-EBI (European Bioinformatics Institute, European Molecular Biology Laboratory), in cui ogni sequenza nucleotidica viene memorizzata, con altre informazioni, in file di testo (entry EMBL) in un formato che prende il nome di formato EMBL.
Il formato EMBL è composto da record che iniziano con un codice a due lettere maisucole che specifica il contenuto del record. I soli record che non iniziano con il codice a due lettere sono quelli contenenti la sequenza nucleotidica.
Dato un file in formato EMBL, contenente la sequenza nucleotidica (sequenza di basi) di un mRNA (trascritto espresso da un gene), produrre:
Parametri in input:
Dove trovare le informazioni che servono per risolvere l'esercizio:
Il record che inizia con ID
ID M10051; SV 1; linear; mRNA; STD; HUM; 4723 BP.
contiene l'identificatore univoco della sequenza (M10051) e l'organismo (HUM). Il fatto che il file si riferisca alla sequenza nucleotidica di un gene è indicato dalla presenza della parola mRNA
.
L'insieme dei record che iniziano con FT sono quelli che contengono le features della sequenza nucleotidica. In particolare tutti i record della sezione:
FT /translation="MGTGGRRGAAAAPLLVAVAALLLGAAGHLYPGEVCPGMDIRNNLT
FT RLHELENCSVIEGHLQILLMFKTRPEDFRDLSFPKLIMITDYLLLFRVYGLESLKDLFP
FT NLTVIRGSRLFFNYALVIFEMVHLKELGLYNLMNITRGSVRIEKNNELCYLATIDWSRI
FT LDSVEDNHIVLNKDDNEECGDICPGTAKGKTNCPATVINGQFVERCWTHSHCQKVCPTI
FT [...]
FT DGGSSLGFKRSYEEHIPYTHMNGGKKNGRILTLPRSNPS"
contengono la sequenza della proteina espressa dal gene.
Il record che inizia con SQ:
SQ Sequence 4723 BP; 1068 A; 1298 C; 1311 G; 1046 T; 0 other;
introduce la sezione della sequenza nucleotidica che termina con il record //
(file del file). Ogni record contenente la sequenza nucleotidica inizia con una serie di spazi iniziali, e contiene un chunk di sequenza lungo 60 basi. L'intero alla fine del record fornisce la lunghezza totale dei chunks fino a tale record. Ogni chunk in un record viene poi separato in chunks più piccoli di 10 basi.
SQ Sequence 4723 BP; 1068 A; 1298 C; 1311 G; 1046 T; 0 other;
ggggggctgc gcggccgggt cggtgcgcac acgagaagga cgcgcggccc ccagcgctct 60
tgggggccgc ctcggagcat gacccccgcg ggccagcgcc gcgcgcctga tccgaggaga 120
ccccgcgctc ccgcagccat gggcaccggg ggccggcggg gggcggcggc cgcgccgctg 180
ctggtggcgg tggccgcgct gctactgggc gccgcgggcc acctgtaccc cggagaggtg 240
tgtcccggca tggatatccg gaacaacctc actaggttgc atgagctgga gaattgctct 300
gtcatcgaag gacacttgca gatactcttg atgttcaaaa cgaggcccga agatttccga 360
gacctcagtt tccccaaact catcatgatc actgattact tgctgctctt ccgggtctat 420
gggctcgaga gcctgaagga cctgttcccc aacctcacgg tcatccgggg atcacgactg 480
[...]
tttttcgttc cccccacccg cccccagcag atggaaagaa agcacctgtt tttacaaatt 4620
cttttttttt tttttttttt tttttttttg ctggtgtctg agcttcagta taaaagacaa 4680
aacttcctgt ttgtggaaca aaatttcgaa agaaaaaacc aaa 4723
//
NOTA BENE:
t
con simboli u
.Requisiti:
nell’header della sequenza nucleotidica in formato FASTA devono comparire l’identificatore univoco della sequenza e l’organismo a cui si riferisce, nel seguente formato:
>M10051-HUM
la sequenza nucleotidica deve essere prodotta su alfabeto {a,c,g,u}
nell’header della sequenza della proteina in formato FASTA devono comparire l’identificatore univoco della sequenza, l’organismo e la lunghezza della proteina, nel seguente formato:
>M10051-HUM; len = 1427
le sequenze in formato FASTA devono essere prodotte in righe di 80 caratteri
deve essere definita una funzione format_fasta()
che prenda come argomenti un'intestazione FASTA, una sequenza nucleotidica/proteica, e restituisca la sequenza in formato FASTA con la sequenza separata in righe di 80 caratteri.
usare solo espressioni regolari per estrarre le informazioni
Variabili di output:
nucleotide_sequence_fasta
: sequenza nucleotidica in formato FASTAprotein_sequence_fasta
: sequenza della proteina in formato FASTALo statement
with open(input_file_name, ’r’) as input_file:
file_str = input_file.read()
permette di ottenere l'handle in lettura input_file
al file input_file
e di ottenere il suo contenuto nell'unica stringa file_str
. Al termine l'handle viene chiuso e lo script può processare la stringa file_str
.
join()
degli oggetti di tipo str
restituisce la concatenazione degli elementi della lista passata come argomento usando la stringa invocante come separatore.
In [5]:
'+'.join(['aa','aa','aa'])
Out[5]: