Dato un file in formato FASTQ, che memorizza reads NGS e la qualità di ognuna delle loro basi, tenere solo i reads che hanno una percentuale almeno P di basi con qualità almeno Q, effettuarne il trimming e produrre in output in formato FASTQ solo i read per cui la porzione rimasta è lunga almeno L.
Il trimming di un read consiste nel trovare la più lunga sottostringa (o una delle più lunghe) le cui basi abbiano tutte una qualità pari ad almeno Q.
Parametri in input:
Requisiti:
ascii_to_quality()
che prenda come argomento un carattere ASCII e restituisca il corrispondente Phred Value.get_quality_percentage()
che prenda in input una stringa di qualità (cioé una stringa di caratteri ASCII che codificano Phred Values) e una soglia minima, e restituisca la percentuale di caratteri che codificano una qualità pari ad almeno la soglia minima.get_trimming_interval()
che prenda in input una stringa di qualità e una soglia minima, e restituisca il più lungo intervallo di posizioni (o uno dei più lunghi) contenente solo caratteri che codificano qualità almeno pari alla soglia minima.deve essere definita la funzione get_trimmed_read()
che prenda in input una soglia minima di qualità e la lista delle quattro stringhe di un read in formato FASTQ (header della sequenza del read, sequenza del read, header della stringa di qualità, stringa di qualità). La funzione deve effettuare il trimming, cioé deve trovare la più lunga sottostringa (o una delle più lunghe) del read le cui basi abbiano una qualità pari ad almeno la soglia minima, e restituire la lista delle quattro stringhe del formato FASTQ del read dopo avere effettuato il trimming. La funzione deve chiamare get_trimming_interval()
.
Ad esempio per una soglia minima di qualità pari a 58 e per il read seguente:
@HWUSI-EAS522:8:5:662:692#0/1
TATGGAGGCCCAACTTCTTGTATTCACAGGTTCTGC
+HWUSI-EAS522:8:5:662:692#0/1
aaaa`aa`aa`]__`aa`_U[_a`^\\UTWZ`X^QX
il trimming produce:
@HWUSI-EAS522:8:5:662:692#0/1
TATGGAGGCCCAACTTCTT
+HWUSI-EAS522:8:5:662:692#0/1,
aaaa`aa`aa`]__`aa`_
che in questo particolare caso corrisponde a tenere un prefisso del read.
Variabili di output:
output_list
, lista dei reads di output in formato FASTQ. Ogni elemento della lista è una lista annidata contenente le quattro righe del formato FASTQ di un read.La funzione ord()
restituisce il valore ASCII del carattere passato come argomento (oggetto di tipo str
).
In [2]:
ord('A')
Out[2]:
Il metodo index()
degli oggetti di tipo list
restituisce l'indice di posizione del valore passato come argomento.
In [4]:
[1,2,3,4].index(3)
Out[4]:
In [ ]: