Bonjour,
voici mon problème:
J'ai plusieurs séquences voici un exemple des séquences:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
>seq1
ABCDEFGHIJKLMANFJFEJFSADFJSDF
>seq2
JGIFJSDGFJSDFJSDOLJFOJDSFOJWERWRWA
>seq3
OSDFISDGSJNVSNLQORUEEJREFJERJ
Je veux découper chaque sequence en des sous-chaine de taille k et recupérer la position position de chaque sous chaine dans sa séquence id.
j'ai utilisé une fonction qui retourne une valeur val de chaque sous-chaine et je vais les stockés dans un tableau (de taille N avec N la taille du tableau) suivant leurs valeurs.
pour cela j'ai crée un tableau de liste chainées. Donc chaque noeud de la liste contient cette structure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
typedef struct Tnoeud{   
  	char* id;   // id du séquence
	char* kmer;   // sous-chaine
	unsigned int position; //position dans id
	struct Thash * next;
}Tnoeud_t;
voici mon programme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//... pour les initialisations tout va bien
while(fgets(sequence1,TAILLE_MAX, fichier1)!= NULL)  // recupère la ligne du fichier de séquences
        {  
          if(sequence1[0]=='>'){
                            strcpy(id,sequence1);
                       printf("%s",id);   // pour afficher l'id de la séquence
                              }
          if(sequence1[0]!='>')
          {
           for(i=0;i<longseq-k;i++)
            {
			   strncpy(Kmer,sequence1+i,k);
					Value= hash(Kmer);   //la fonction qui retourne une valeur à partir une sous-chaine de taille k c'est Kmer
					Value=Value%lenght;
				TThash[Value]=ajouteteteliste(TThash[Value],id,Kmer,i); // le tableau de liste chainées de taille lenght est TThash
			}
           }
        }
J'ajoute à chaque fois dans la tete de la liste pour qu'il ne parcours pas toute la liste est insère le nouveau noeud à la fin (gagner du temps.).

Mon problème est que j'ai enormément de séquence (20000 séquences) et en moyenne la taille des séquences est 40000 caractères.
J'ai essayé d'éxécuter mais à un certain temps le processus s'arrete j'ai cru que c'est un problème de mémoire puisque je vais avoir (20000*40000) noeuds donc le tableau est très grand.
Est ce que vous avec une idée?
Merci