Dato un file in formato GTF (Gene Transfer Format) che annota un set di geni sulla stessa genomica di riferimento, e il file della genomica di riferimento (genomic reference) in formato FASTA, produrre in output:
L'header del formato FASTA deve contenere per ogni sequenza prodotta in output (trascritto full-length o CDS):
e deve rispettare il formato dei seguenti esempi:
>ARHGAP4; U52112.4-003; len=3235 type=transcript; strand=-
>AVPR2; U52112.2-003; type=cds; strand=+
Parametri in input:
exon
per i trascritti full-length e CDS
per le coding sequencesRequisiti:
deve essere definita una funzione format_fasta()
che prenda come argomenti un'intestazione FASTA e una sequenza, e restituisca la sequenza in formato FASTA separata in righe di 80 caratteri.
deve essere definita una funzione reverse_complement()
che prenda come argomento una sequenza nucleotidica e ne restituisca il reverse&complement.
deve essere definita una funzione compose_feature()
che prenda come argomenti una lista di features dello stesso tipo (in cui ogni feature è una tupla (start, end)), la genomica di riferimento, lo strand delle features rispetto alla genomica di riferimento (cioé lo strand del gene a cui le features appartengono), ed effettui la concatenazione delle sequenze delle features, effettuando il reverse&complement se lo strand del gene è -
(strand minus).
NOTA BENE: gli attributi (coppie nome-valore) del nono campo del file GTF non devono essere pensati a ordine fisso all'interno del campo. Per estrarre quindi un attributo, non si può usare il metodo split()
, ma si deve necessariamente usare un'espressione regolare.
Variabili di output:
sequence_fasta_list
: lista delle sequenze ricostruite (trascritti full-length o coding sequences) in formato FASTAgene_set
: set dei geni coinvolti nelle sequenze ricostruiteIl metodo get
degli oggetti di tipo dict
permette, oltre a specificare una chiave come primo argomento, anche un valore di default come secondo argomento. Se la chiave non esiste, viene restituito il valore di default.
Quindi la seguente invocazione:
my_dict.get(my_key, default_value)
restituisce il valore relativo alla chiave my_key
se la chiave è presente nel dizionario, oppure il valore default_value
se la chiave non esiste.
In [1]:
my_dict = dict()
my_dict.get('chiave non esistente', 10)
Out[1]: