Para melhorar a compactação gzip, você deseja que as seqüências "semelhantes" sejam fechadas na lista. Existem várias maneiras de definir essa semelhança; deixe-me descrever um razoável que funcione bem na prática. Lembre-se de que o tamanho do bloco do gzip é de 64K. Assim, seus dados serão divididos em blocos de 64K bytes e cada bloco será compactado independentemente. Para otimizar a compactação, seria necessário minimizar o número de k-mers distintos (substrings de tamanho k) em cada bloco. A motivação é que todos esses substrings sejam substituídos por um identificador.
Embora o problema acima seja difícil em teoria (é uma variante do particionamento de hipergráficos), existem algoritmos práticos rápidos. Eu recomendaria o cluster do tipo LSH que pode ser implementado com uma única passagem nos seus dados. Observe que a classificação (alfabética) é outra maneira de "agrupar" cadeias semelhantes. No entanto, algoritmos de clustering especializados podem ter um desempenho melhor.
Uma alternativa é usar o zstd , que é (i) mais rápido, (ii) obtém taxas de compressão mais altas e (iii) não possui limitações no tamanho do bloco (e, assim, compacta as seqüências igualmente bem, independentemente da ordem de entrada).