Oi Guilherme
> gostaria de saber como contar o numero de ocorrências (match perfeito) das
> sequencias de um arquivo no segundo...
Se você precisa de um "match perfeito", você pode carregar as
sequencias como strings e usar o "find" que só acha "perfect matches"
não sobrepostos. Você só precisaria fazer um alinhamento e usar
distâncias caso fosse necessário buscar sequencias semelhantes.
Iguais, o "find" faz o serviço e bem rápido.
Se entendi seu problema minha sugestão tabajara é:
1 - Abra o seu arquivo 1 e carregue suas sequencias individualmente.
2 - Abra seu arquivo 2 com um open().read() (se esse for na ordem de
Mb você não vai ter problema de memória... se for algumas centenas de
Mb talvez seja interessante carrega-lo em blocos... mas cuidado para
abrir em blocos que não quebre uma sequencia no meio)
3 - Para cada sequencia do seu arquivo 1, use o find até o final do
arquivo 2 ou dos blocos. Isto é enquanto o valor retornado por find
for menor que a string do arquivo 2 você busca os matches.
4 - Salve a localização das sequencias apenas (o valor retornado pelo
find, e esse mesmo valor mais o comprimento do match e um id da seq do
arquivo 1) e não a sequencia propriamente dita. Use SQLite, como já
sugerido, ou em um arquivo, ou simplesmente deixe na memoria...
afinal, vc estara salvando, por exemplo, uma lista de tuplas com três
inteiros (o inicio e o fim do match no arquivo 2 e um id da sequência
do arquivo 1) na memoria.
5- Mapeie seu arquivo 2, de forma q vc saiba onde está o começo e o
fim de cada sequencia dele.
6- Tendo o mapa do arquivo 2 e a localização do matches.... você tem o
que quer
A não ser que seu arquivo seja realmente grande, acho que fara cada
seq em questão de segundos com o find.
Abs,
Fred