Calcul de la séquence consensus : changer le choix des reads utilisés
Pour des questions d'optimisation tous les reads ne sont pas stockés et nous n'utilisons qu'un échantillon des reads d'un clone (pour les gros clones) afin de calculer le consensus. Ce choix est géré dans la classe ReadQualityScore
du fichier read_score.cpp
: on se base à la fois sur le dernier percentile de la qualité du read et sur la longueur du read. Les reads les plus longs et de meilleure qualité sont donc choisis.
On va donc biaiser le choix en faveur des séquences les plus longues. Ce qui est à la fois souhaitable : pour des raisons de qualité de séquençage on pourrait se retrouver avec uniquement une faible portion des reads du clone qui sont de pleine longueur (si on a beaucoup d'erreurs sur R2 le merge va échouer par exemple). Et c'est à la fois non souhaitable car on va privilégier les séquences les plus longues qui ne sont pas forcément représentatives du clone (cf. #3290).
Une solution serait de se contenter d'un échantillon aléatoire des reads de meilleure qualité (ce qui est plus représentatif du clone). Cela pose la question de comment constituer cet échantillon aléatoire au fur et à mesure sans connaitre a priori la taille du clone et sans biaiser en faveur des premiers ou des derniers reads. Si cette solution donne une séquence consensus dont la longueur n'est pas satisfaisante on peut ensuite passer à une autre stratégie privilégiant les longueurs les plus élevées.
Mais je n'arrive pas à voir une solution unique qui donnerait le résultat attendu dans tous les cas.