Esercizio 5

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:

  • (a scelta) le sequenze dei trascritti full-length o le sequenze delle coding sequences (CDS) che si trovano annotati nel file GTF
  • il set dei geni (identificati tramite il loro HUGO name) relativi alle sequenze prodotte al punto precedente

L'header del formato FASTA deve contenere per ogni sequenza prodotta in output (trascritto full-length o CDS):

  • lo HUGO name del gene di riferimento
  • l’identificatore del trascritto di riferimento (sia per trascritto full-length che per CDS)
  • il tipo di sequenza (cioé se è trascritto full-length o CDS)
  • lo strand del gene rispetto alla genomic reference

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:

  • nome del file in formato GTF
  • nome del file della genomic reference in formato FASTA
  • nome della feature GTF che compone la sequenza da ricostruire: exon per i trascritti full-length e CDS per le coding sequences

Requisiti:

  • 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 FASTA
  • gene_set: set dei geni coinvolti nelle sequenze ricostruite

Interrogazione di un dizionario e recupero del valore di default nel caso di chiave inesistente

Il 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]:
10